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