【问题标题】:Cannot deploy web service in GlassFish using together @WebserviceProvider and @Stateless无法同时使用 @WebserviceProvider 和 @Stateless 在 GlassFish 中部署 Web 服务
【发布时间】:2012-09-08 22:08:04
【问题描述】:

我尝试在 GlassFish JAX-WS Web 服务中部署, 这是定义了 Web 服务的类的 sn-p。注意我在 EJB 端点上实现了 Provider 接口。

@Stateless(name = "HelloWorldEJBWS")
@WebServiceProvider(
    portName = "HelloWorldWSPort", 
    serviceName = "HelloWorldWSService", 
    targetNamespace = "http://ivan.com/",
    wsdlLocation ="HelloWorldEJBProvider.wsdl")

@ServiceMode(value = Service.Mode.PAYLOAD)

public class HelloWorldEJBWS implements Provider<Source> {

public Source invoke(final Source inRequestMessage) {

    ...
}   
}

问题在于在 GlassFish (3.1.2.2) 中部署服务。 F.

[#|2012-09-08T16:39:15.682-0400|INFO|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID =20;_ThreadName=Thread-2;|EJB5181:EJB HelloWorldEJBWS 的可移植 JNDI 名称:[java:global/JAX-WS_GreetingEJBMutualAuthProvider/HelloWorldEJBWS, java:global/JAX-WS_GreetingEJBMutualAuthProvider/HelloWorldEJBWS!javax.xml.ws.Provider]|# ]

[#|2012-09-08T16:39:15.792-0400|INFO|glassfish3.1.2|javax.enterprise.webservices.org.glassfish.webservices|_ThreadID=20;_ThreadName=Thread-2;|WS00019: EJB已部署端点 JAX-WS_GreetingEJBMutualAuthProvider 监听地址 http://ABRAMOV1:8088/HelloWorldWSService/com.ivan.wsejb.provider.HelloWorldEJBWS|#]

即使它显示端点已部署 - 不是。我无法到达此端点,并且它未显示在 GlassFish 控制台中。

为了比较,我在使用 @WebService 而不是 @WebServiceProvider 部署服务时提供了日志

[#|2012-09-08T16:41:50.514-0400|INFO|glassfish3.1.2|javax.enterprise.webservices.org.glassfish.webservices|_ThreadID=22;_ThreadName=Thread-2;|WS00019: EJB已部署端点 JAX-WS_GreetingEJBMutualAuth 监听地址为 http://ABRAMOV1:8088/HelloWorldEJBWSService/HelloWorldEJBWS|#]

在这种情况下,端点部署正确,一切正常。

这里是我应用@WebService 时的代码片段

@Stateless(name = "HelloWorldEJBWS")
@WebService()
public class HelloWorldEJBWS {

public String hello(final String inMessage) {
    ...
}

}

我做错了吗?

【问题讨论】:

    标签: web-services glassfish jax-ws


    【解决方案1】:

    我做的一切都是正确的,但被 GlassFish 误导了。这可能是一个错误... 当我在控制台中部署 Web 服务并将端点实现为 servlet(第二种情况)时,我可以看到端点,但如果端点实现为 EJB,则端点不会出现在控制台中。但我可以通过链接http://localhost:8088/HelloWorldWSService/com.ivan.wsejb.provider.HelloWorldEJBWS?wsdl 访问 WSDL,并最终使用客户端测试 Web 服务

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      相关资源
      最近更新 更多