Почему JSP axis2 выдают ошибки компилятора при запуске в tomcat6?

#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 решило проблему.