我有一个WSDL文件,它定义了一个事件操作。
需要定义一个SOAP服务终结点,它是由第三方使用WSDL文件中指定的一些参数调用的。
该项目使用EJB2.1
无法获得工作的终点(404错误):
http://localhost:28080/myapp/ws/ClassCallBack下面的类位于EAR文件的根文件夹中的JAR文件中。
有什么不对劲吗?我必须在某些xml中将这个类声明为EJB吗?(在ejb-jar.xml中,所有EJB会话bean都是声明的,但这不是会话bean)
@WebService
public interface ClassCallBackWs {
@WebMethod
public void event(@WebParam(name = "event") ClassParameter event)
throws Exception;
}
=====================================
@Stateless(name = "ClassCallBackEjb")
@SOAPBinding(style = SOAPBinding.Style.RPC)
@WebService(name = "ClassCallBackWs", portName = "ClassCallBackWs",
serviceName = "ClassCallBackWsService",
targetNamespace = "http://test.serverurl.org.com/",
endpointInterface = "ClassCallBackWs")
@WebContext(contextRoot = "/myapp/ws/",
urlPattern = "/v0/ClassCallBackWsImpl",
transportGuarantee = "NONE", secureWSDLAccess = false)
public class ClassCallBackWsImpl implements ClassCallBackWs {
@WebMethod
public void event(@WebParam(name = "event") ClassParameter event) throws Exception {
}
}发布于 2017-06-29 16:55:56
下面给出一个可能的解决方案的例子。创建自定义servlet,该servlet通过在XML中定义JAX WS端点来映射到实现类。
(隐藏了与最终解决方案有关的所有姓名,如私有的)。对不起,如果由于这个原因有错误)。
Servlet映射/ XML:
<servlet-mapping>
<servlet-name>testws</servlet-name>
<url-pattern>/myapp/ws/v0/</url-pattern>
</servlet-mapping>用作端点的servlet的XML配置:
<jaxws:endpoint
id="CallBackWs" implementor="org.test.ClassCallBackWsImpl "
wsdlLocation="WEB-INF/wsdl/CallBackTest.wsdl"
address="/ClassCallBackWsImpl"
bindingUri="ClassCallBackWsImpl">
</jaxws:endpoint>端点驱动类:
@WebService(
portName = "CallBackWs",
serviceName = "CallBackWsService",
targetNamespace = "http://test.server.callback.ws/",
endpointInterface = "org.test.CallBackWs")
public class ClassCallBackWsImpl implements ClassCallBackWs{
public void event(ClassParameter event) throws Exception {
}
}接口类:
@WebService(targetNamespace = "http://test.server.callback.ws/", name = "ClassCallBackWs")
public interface Ws {
@RequestWrapper(localName = "event", targetNamespace = "http://test.server.callback.ws/", className = "org.test.ClassParameter")
@WebMethod
public void event(
@WebParam(name = "event", targetNamespace = "")
org.test.ClassParameter event
) throws Exception;
}https://stackoverflow.com/questions/44459365
复制相似问题