Java 构建一场使用Axis2+;雄猫堡垒

Java 构建一场使用Axis2+;雄猫堡垒,java,tomcat,jetty,axis,rampart,Java,Tomcat,Jetty,Axis,Rampart,我正在尝试使用rampart为您构建一个基于axis的web服务 安全,我一直希望在tomcat部署一场战争, 而不是安装axis并在axis内部署。(我还没修好 不过,这对我来说是一个全新的领域,所以我可以 使用您可能得到的任何反馈。) 我遇到了一些问题: mvnjetty:run工作正常——我可以使用web服务,并且 通过点击带有?wsdl标记的我的服务的url来检索wsdl 最后(例如: “webservice”是这个项目的名称),但是,mvn jetty:RunWar 失败,除非我手动

我正在尝试使用rampart为您构建一个基于axis的web服务 安全,我一直希望在tomcat部署一场战争, 而不是安装axis并在axis内部署。(我还没修好 不过,这对我来说是一个全新的领域,所以我可以 使用您可能得到的任何反馈。)

我遇到了一些问题:

  • mvnjetty:run
    工作正常——我可以使用web服务,并且 通过点击带有?wsdl标记的我的服务的url来检索wsdl 最后(例如: “webservice”是这个项目的名称),但是,mvn jetty:RunWar 失败,除非我手动将rampart-1.4.mar和rahas-1.4.mar复制到 首先手动打开WEB-INF/lib目录。如果不这样做,那么 jetty:RunWar产生了一系列关于rampart模块的异常 不可用,并且点击与上述相同的wsdl url将返回 空页。(完全没有内容,因为它应该是一个很好的 (wsdl) 以下是堆栈跟踪:

  • 无论mar文件在生成的war中的位置如何, 我从未能够让tomcat为web服务 对。它不会向日志发布任何值得注意的内容(只是一个信息) 部署了web应用程序),并且没有为其提供wsdl 上面的URL。 返回 没有什么。('infoassist.war'是生成的war的名称,因此 与jetty不同的url)

如果我查询的url不是以?wsdl结尾,那么我会得到一个轴 浏览器中的异常。这可能很好,甚至会发生 运行功能性jetty时:运行服务器,我不期望 由于到目前为止我所做的一切都是 只是为了测试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)
我真的是在抓救命稻草--任何帮助都将是巨大的 谢谢,当然,我可以提供更多的细节,我只是
不知道什么有用。

问题之后是建议

问:您是通过eclipse生成WSDL的吗?如果是,您是否确保它是Axis的正确版本


S:我会把所有东西都放进耳朵里,我相信tomcat会支持这一点。EAR是一个可以存放多个WAR和JAR的目录

在各种来源的大力帮助下,我找到了它:

首先,

请按照以下说明操作:

但是,在构建axis war时,必须首先调整构建,以便axis2-codegen-1.5.jar不会从归档中排除,请参见以下说明:

要在Axis2服务器安装中使用Rampart代码,需要创建一个新的Axis2.war文件,其中包括添加的Rampart.jar和.mar文件。您可以使用webapp目录中提供的Ant build.xml创建axis2.war,只要您做一个更改:删除文件末尾附近的行。然后打开Axis2 webapp目录的控制台并运行
ant
。运行build.xml后,您可以在axis2安装目录中找到创建的axis2.war Web应用程序


这应该足以在axis管理页面的加载模块列表中看到rampart(可能位于)。但是,如果您使用这些库的二进制发行版(axis/rampart)您还必须注意将代码编译为与1.5兼容的java类规范。我没有这样做,所以我一直遇到
java.lang.UnsupportedClassVersionError
错误,但没有明确说明问题的真正原因——我怀疑axis2-codegen-1.5.jar是个危险的东西——问题s实际上是我编译的类文件的字节码版本。当我从发行版中构建rampart示例时也发生了这种情况,因为它们是以源代码形式分发的,我的默认编译器是java 1.6。

服务器端没有静态WSDL。客户端使用java2wsdl获取WSDL,然后将其用作输入到wsdl2java来创建客户端所需的类。据我所知,服务器端axis的东西在运行时自动从服务类生成WSDL。我现在正在尝试进行aar,并将其放入tomcat中的axis+rampart安装中。如果aar方法不起作用,我会给你一个尝试。谢谢!我没有您提到的链接中的ried步骤,,但在运行客户端请求时,我在服务器(如org.apache.ws.security.WSSecurityException)中遇到了一个错误:无法对安全令牌进行身份验证或授权。您知道为什么会出现此错误吗?请您调查一下question@dileepVikram恐怕我帮不了你--在过去的五年中,我没有做过任何基于Java的web服务工作。好的,谢谢你的评论。你有关于ws-Policys和rampart的更多文档或有用的链接吗。我被这个问题困扰了一段时间。另外,我也没有看到任何关于这个问题的好教程。我将axis2与rampart一起使用。@dileepVikram我没有,对不起,我没有没办法,这几天我几乎只和Haskell一起工作。