无法一起使用@WebserviceProvider和@Stateless在GlassFish中部署Web服务

时间:2012-09-08 22:08:05

标签: web-services glassfish jax-ws

我尝试在GlassFish JAX-WS Web服务中部署, 这是Web服务定义的一小部分类。注意我在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; _TreadName = 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; _TreadName = 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) {
    ...
}

}

我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

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

测试Web服务