#java #jsp #tomcat #axis2
#java #jsp #tomcat #axis2
Вопрос:
В Ubuntu я запускаю Tomcat 6, версия Tomcat в нижней части браузера гласит:
Apache Tomcat/6.0.28
Я установил Tomcat через apt-get
. Я создал несколько сервлетов «hello world» и подтвердил, что Tomcat 6, похоже, работает правильно.
Поскольку моей конечной целью было создание веб-сервиса, я пошел искать axis2. Я не смог найти никаких пакетов Ubuntu для axis2, поэтому я затем пошел и скачал axis2 v 1.6.1 из здесь и распаковал его в свой домашний каталог. Для начала я указал символическую ссылку из /var/lib/tomcat6/webapps/axis2 -> /home/doug/…/ axis2-1.6.1/webapp/ на основе этих инструкций.
Переход к http://localhost:8080/axis2 / Я ожидаю увидеть базовый axis2 (администратор?) страницы. Вместо этого я получаю множество ошибок, жалующихся на невозможность компиляции jsp axis2:
Введите отчет об исключении Сообщение описание Сервер столкнулся с внутренней ошибкой (), которая не позволила ему выполнить этот запрос. исключение org.apache.jasper.JasperException: Не удается скомпилировать класс для JSP: Произошла ошибка в строке: 6 в сгенерированном файле Java Можно импортировать только тип. org.apache.axis2.Constants преобразуется в пакет Произошла ошибка в строке: 7 в сгенерированном файле Java Можно импортировать только тип. org.apache.axis2.context.ConfigurationContext преобразуется в пакет Произошла ошибка в строке: 8 в сгенерированном файле Java Можно импортировать только тип. org.apache.axis2.description.Параметр преобразуется в пакет Произошла ошибка в строке: 9 в сгенерированном файле Java Можно импортировать только тип. org.apache.axis2.transport.http.AxisServlet преобразуется в пакет Произошла ошибка в строке: 10 в сгенерированном файле Java Можно импортировать только тип. org.apache.axis2.transport.TransportListener преобразуется в пакет Ошибка произошла в строке: 31 в файле jsp: /axis2-web/include/httpbase.jsp ConfigurationContext не может быть преобразован в тип 28: 29: public void jspInit() { 30: Контекст ServletContext = this.getServletConfig().getServletContext(); 31: ConfigurationContext configctx = (ConfigurationContext) context.getAttribute(AxisServlet.CONFIGURATION_CONTEXT); 32: if (configctx != null) { 33: Параметр parameter = configctx.getAxisConfiguration().getParameter(константы.HTTP_FRONTEND_HOST_URL); 34: if (параметр != null) { Ошибка произошла в строке: 31 в файле jsp: /axis2-web/include/httpbase.jsp ConfigurationContext не может быть преобразован в тип 28: 29: public void jspInit() { 30: Контекст ServletContext = this.getServletConfig().getServletContext(); 31: ConfigurationContext configctx = (ConfigurationContext) context.getAttribute(AxisServlet.CONFIGURATION_CONTEXT); 32: if (configctx != null) { 33: Параметр parameter = configctx.getAxisConfiguration().getParameter(константы.HTTP_FRONTEND_HOST_URL); 34: if (параметр != null) { Ошибка произошла в строке: 31 в файле jsp: /axis2-web/include/httpbase.jsp AxisServlet.CONFIGURATION_CONTEXT не может быть преобразован в тип 28: 29: public void jspInit() { 30: Контекст ServletContext = this.getServletConfig().getServletContext(); 31: ConfigurationContext configctx = (ConfigurationContext) context.getAttribute(AxisServlet.CONFIGURATION_CONTEXT); 32: if (configctx != null) { 33: Параметр parameter = configctx.getAxisConfiguration().getParameter(константы.HTTP_FRONTEND_HOST_URL); 34: if (параметр != null) { Произошла ошибка в строке: 33 в файле jsp: /axis2-web/include/httpbase.jsp Параметр не может быть преобразован в тип 30: Контекст ServletContext = this.getServletConfig().getServletContext(); 31: ConfigurationContext configctx = (ConfigurationContext) context.getAttribute(AxisServlet.CONFIGURATION_CONTEXT); 32: if (configctx != null) { 33: Параметр parameter = configctx.getAxisConfiguration().getParameter(константы.HTTP_FRONTEND_HOST_URL); 34: if (параметр != null) { 35: frontendHostUrl = (String) параметр.GetValue(); 36: } Произошла ошибка в строке: 33 в файле jsp: /axis2-web/include/httpbase.jsp Константы.HTTP_FRONTEND_HOST_URL не может быть преобразован в тип 30: Контекст ServletContext = this.getServletConfig().getServletContext(); 31: ConfigurationContext configctx = (ConfigurationContext) context.getAttribute(AxisServlet.CONFIGURATION_CONTEXT); 32: if (configctx != null) { 33: Параметр parameter = configctx.getAxisConfiguration().getParameter(константы.HTTP_FRONTEND_HOST_URL); 34: if (параметр != null) { 35: frontendHostUrl = (String) параметр.GetValue(); 36: } Произошла ошибка в строке: 37 в файле jsp: /axis2-web/include/httpbase.jsp Параметр не может быть преобразован в тип 34: if (параметр != null) { 35: frontendHostUrl = (String) параметр.GetValue(); 36: } 37: Параметр hostnameParam = configctx.getAxisConfiguration().getParameter(TransportListener.HOST_ADDRESS); 38: if (hostnameParam != null) { 39: hostname = (строка) hostnameParam.GetValue(); 40: } Произошла ошибка в строке: 37 в файле jsp: /axis2-web/include/httpbase.jsp TransportListener.HOST_ADDRESS не может быть преобразован в тип 34: if (параметр != null) { 35: frontendHostUrl = (String) параметр.GetValue(); 36: } 37: Параметр hostnameParam = configctx.getAxisConfiguration().getParameter(TransportListener.HOST_ADDRESS); 38: if (hostnameParam != null) { 39: hostname = (строка) hostnameParam.GetValue(); 40: } Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) org.apache.jasper.compiler.Ошибка dispatcher.javacError(ошибка DISPATCHER.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439) org.apache.jasper.compiler.Compiler.compile(Compiler.java:349) org.apache.jasper.compiler.Compiler.compile(Compiler.java:327) org.apache.jasper.compiler.Compiler.compile(Compiler.java:314) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) org.apache.jsp.axis2_002dweb.index_jsp._jspService(index_jsp.java:59) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Не следует ли мне попробовать последнюю версию axis2 с Tomcat 6? Есть ли пакет Ubuntu, который я должен использовать вместо этого?
Комментарии:
1. Никогда такого не видел, но я бы действительно рекомендовал просто получить свой собственный Tomcat и поместить его в один из ваших собственных каталогов и скопировать в него веб-приложение axis. Таким образом, у вас гораздо больше контроля над всем процессом.
2. Кстати, почему выбор в пользу Axis JSP довольно старомоден? Почему не JAX-WS / RS? Веб-сервисы были стандартизированы в Java EE начиная с Java EE 5 с JAX-WS API, а начиная с Java EE 6 также с потрясающим RESTful JAX-RS API. Для JAX-WS см. metro.java.net/guide и для JAX-RS см. jersey.java.net/nonav/documentation/latest/user-guide.html
Ответ №1:
Эти запутанные ошибки компиляции JSP находятся под прикрытием фактически NoClassDefFoundError
, что в вашем конкретном случае, в свою очередь, означает, что библиотеки, связанные с Axis (JAR-файлы), отсутствуют в пути к классам среды выполнения веб-приложения. /WEB-INF/lib
Папка веб-приложения является частью пути к классам среды выполнения веб-приложения, поэтому поместите их туда.
Комментарии:
1. Да, очевидно, Tomcat не экстрасенс, я полагаю, что еще одна вещь, которую я мог бы сделать, это выяснить, как использовать путь к классу Tomcat, чтобы указать, где у меня были мои библиотеки axis.
Ответ №2:
В кратком руководстве по началу работы, на которое вы ссылаетесь, не говорится, что вы должны создать «символическую ссылку из /var/ lib /tomcat6/webapps/ axis2 -> /home/doug/…/ axis2-1.6.1/webapp /». В нем говорится, что вы должны «Скопировать файл axis2.war в каталог webapps вашего движка сервлетов». Есть два способа получить файл axis2.war:
- Загрузите дистрибутив WAR.
- Загрузите двоичный дистрибутив и запустите Ant-скрипт в папке webapp.
Ответ №3:
Я загрузил axis2-1.6.2-bin.zip и добавил его в eclipse, используя Window -> Preferences -> Web Services -> Axis2 Preferences -> Axis2 Runtime
Затем создал веб-сервис из класса Java.
Использование axis2-1.6.2-bin вместо axis2-1.7.3-bin решило проблему.