首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EJB2.1 Web服务端点@WebContext

EJB2.1 Web服务端点@WebContext
EN

Stack Overflow用户
提问于 2017-06-09 13:41:18
回答 1查看 528关注 0票数 0

我有一个WSDL文件,它定义了一个事件操作。

需要定义一个SOAP服务终结点,它是由第三方使用WSDL文件中指定的一些参数调用的。

该项目使用EJB2.1

无法获得工作的终点(404错误):

代码语言:javascript
复制
http://localhost:28080/myapp/ws/ClassCallBack

下面的类位于EAR文件的根文件夹中的JAR文件中。

有什么不对劲吗?我必须在某些xml中将这个类声明为EJB吗?(在ejb-jar.xml中,所有EJB会话bean都是声明的,但这不是会话bean)

代码语言:javascript
复制
@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 {
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-29 16:55:56

下面给出一个可能的解决方案的例子。创建自定义servlet,该servlet通过在XML中定义JAX WS端点来映射到实现类。

(隐藏了与最终解决方案有关的所有姓名,如私有的)。对不起,如果由于这个原因有错误)。

Servlet映射/ XML:

代码语言:javascript
复制
<servlet-mapping>
    <servlet-name>testws</servlet-name>
    <url-pattern>/myapp/ws/v0/</url-pattern>
</servlet-mapping>

用作端点的servlet的XML配置:

代码语言:javascript
复制
    <jaxws:endpoint
        id="CallBackWs" implementor="org.test.ClassCallBackWsImpl "
        wsdlLocation="WEB-INF/wsdl/CallBackTest.wsdl"
        address="/ClassCallBackWsImpl"
        bindingUri="ClassCallBackWsImpl">
    </jaxws:endpoint>

端点驱动类:

代码语言:javascript
复制
   @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 { 
       } 
   }

接口类:

代码语言:javascript
复制
@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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44459365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档