消息级别Jax-WS服务

我正在尝试创建一个WebService存根。 我喜欢在一个地方对所有请求做出反应。 我有一个示例值生成器,它处理请求的类型并创建一个示例响应,因此我不需要具有大量类的代码生成器。 只是一个非常简单的。

我找到了http://jax-ws.java.net/nonav/2.2.1/docs/provider.html WebServiceProvider,它正是为了获取原始SOAP消息,并在一个地方创建响应。

主要的问题是我是这个神奇的EE世界的新手:)我无论如何都无法启动WebServiceProvider示例。

我有Spring,SpringSource ToolSuit,Axis安装/配置,所有其他的东西都工作。

谢谢大家的帮助,如果问题对你来说太简单,请原谅。 也许我只是没找到/读过的东西。 M.

最后我找到了解决方案(感谢我的同事的帮助)。 如果您使用的是JAX-WS,则有一个简单的解决方案。

您的WEB-INF文件夹中需要sun-jaxws.xml,其中包含以下内容:

    

你需要一个com.stg.pack.MyServiceProvider类,它看起来像:

 package com.stg.pack; @ServiceMode(value = Service.Mode.MESSAGE) @WebServiceProvider(portName = "ThePortNameOfWebService", serviceName = "TheNameOfWebService", targetNamespace = "http://www.example.com/target/namespace/uri") public class MyServiceProvider implements Provider { @Override public SOAPMessage invoke(SOAPMessage request) { SOAPMessage result = null; // create response SOAPMessage return result; } } 

在我忘记之前,你需要在web.xml中定义一些东西:

    com.sun.xml.ws.transport.http.servlet.WSServletContextListener    RawWS  com.sun.xml.ws.transport.http.servlet.WSServlet    RawWS /TheNameOfWebService  

如果您像这样使用它,则所有请求都由invoke方法处理。

你基本上必须将你的提供者部署到某种Container。 在J / EE中开发基本上要求您编译某种EAR或WAR或JAR并告诉应用服务器部署它(该应用服务器是JBOSS,glassfish,Weblogic,Websphere,Tomcat等)。

你试过这个吗?

也可以使用javax.xml.ws.Endpoint类来测试你的提供者,虽然我不得不承认我从来没有选择过这个来支持部署到app服务器。