Ведение ВОЙНЫ , в которой используется Axis2 + Rampart для Tomcat

StackOverflow https://stackoverflow.com/questions/1717845

Вопрос

Я пытаюсь создать веб-сервис на основе axis с помощью rampart для обеспечения безопасности, и я надеялся развернуть один war в tomcat, вместо установки axis и развертывания внутри axis.(Я не зациклен хотя на этом...это все очень новая территория для меня, поэтому я мог бы использовать любую обратную связь, которая у вас может быть.)

Я столкнулся с несколькими проблемами:

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

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

Если я запрашиваю URL, который не заканчивается на ?wsdl, то я получаю axis исключение в браузере.Вероятно, это нормально - такое случается даже при запуске функционального сервера jetty: run, и я не ожидаю "реального" вывода в браузере, поскольку все, что я делал до сих пор, - это просто для тестирования soap.Это указывает на то, что axis используется с 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

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

Первый,

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

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top