Buliding WAR, которая использует Axis2 + Rampart для Tomcat - PullRequest
1 голос
/ 11 ноября 2009

Я пытаюсь построить основанный на оси веб-сервис с Rampart для безопасность, и я надеялся развернуть одну войну для кота, вместо установки оси и развертывания внутри оси. (Я не исправлена на этом, хотя ... это все очень новая территория для меня, поэтому я мог используйте любые отзывы, которые у вас могут быть.)

У меня несколько проблем:

  • mvn jetty:run работает нормально - я могу использовать веб-сервис, и получить wsdl, нажав на ссылку для моих служб с? wsdl в конце (например: http://localhost:8080/webservice/services/ResultService?wsdl "webservice" - название этого проекта), однако, mvn jetty: run-war терпит неудачу, , если я вручную копирую rampart-1.4.mar и rahas-1.4.mar в сначала каталог WEB-INF / lib вручную. Если это не сделано, то Причал: Run-War производит серию исключений о модулях Rampart недоступность, и нажатие на тот же URL-адрес wsdl, что и выше, возвращает пустая страница (нет контента вообще, когда это должно быть хороший кусок WSDL) Вот следы стека: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=12058#a12058

  • Независимо от расположения файлов mar в сгенерированной войне, Мне никогда не удавалось заставить tomcat обслуживать веб-сервис должным образом. Он не выдает ничего заметки в журнал (просто ИНФО веб-приложение было развернуто), и wsdl не предоставляется для URL выше. http://localhost:8180/infoassist/services/ResultService?wsdl возврат ничего такого. («infoassist.war» - это название возникшей войны, следовательно, URL, отличный от причала)

Если я запрашиваю URL, который не заканчивается на? Wsdl, то я получаю ось исключение в браузере. Это, вероятно, хорошо - это случается даже при запуске функциональной пристани: запустить сервер, и я не ожидаю «реального» вывода в браузере пока нет, так как все, что я сделал до сих пор просто чтобы проверить мыло. Это указывает на то, что ось используется с Tomcat хотя, по крайней мере, некоторые военных зависимостей работают:

org.apache.axis2.AxisFault: The service cannot be found for the
endpoint reference (EPR) /infoassist/ at
org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:65)
at org.apache.axis2.engine.Phase.invoke(Phase.java:334) at
org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:251) at
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:160) at
org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:135)
at org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:130)
at org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processURLRequest(AxisServlet.java:838)
at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:262)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)

Я действительно цепляюсь за соломинку здесь - любая помощь будет очень оценил, и, конечно, я могу предоставить гораздо больше деталей, я просто не знаю, что будет полезно.

Ответы [ 2 ]

1 голос
/ 13 ноября 2009

Я понял это при значительной помощи из разных источников:

Во-первых,

Следуйте этим инструкциям:

Однако, при построении войны осей, вы должны сначала настроить сборку так, чтобы axis2-codegen-1.5.jar был не исключен из архива, согласно инструкциям здесь :

Чтобы использовать код Rampart в установке сервера Axis2, необходимо создать новый файл axis2.war, в который будут добавлены файлы Rampart .jar и .mar. Вы можете использовать Ant build.xml, предоставленный в каталоге webapp для создания axis2.war, при условии, что вы сделаете одно изменение: удалите строку в конце файла. Затем откройте консоль в каталоге веб-приложения Axis2 и запустите ant. После запуска build.xml созданное веб-приложение axis2.war можно найти в каталоге установки Axis2.

Этого должно быть достаточно, чтобы увидеть rampart в списке загруженных модулей со страницы администрирования оси (который, вероятно, равен http://localhost:8080/axis2/axis2-admin/listModules. Однако, если вы используете двоичные дистрибутивы этих библиотек (axis / rampart) Вы также должны позаботиться о том, чтобы компилировать свой код в спецификацию класса Java, совместимую с 1.5. Я этого не делал, поэтому я продолжал сталкиваться с ошибками java.lang.UnsupportedClassVersionError, но ничто не проясняло, что на самом деле вызывало проблему - - Я подозревал, что файл axis2-codegen-1.5.jar, который представлял собой «красную сельдь», на самом деле проблема была связана с версией байт-кода моих соблюдаемых классов. Это также произошло, когда я собрал образцы Rampart из дистрибутива, потому что они были распределены в исходная форма, и мой компилятор по умолчанию - Java 1.6.

1 голос
/ 12 ноября 2009

Вопрос, за которым следует предложение.

В: Вы сгенерировали WSDL через затмение? Если так, то вы убедились, что это правильная версия Axis?

S: Я бы бросил все в EAR, который, как я полагаю, поддерживает Tomcat. EAR - это каталог, который может содержать несколько WAR и JAR

...