当我使用endpointInterface定义时,Glassfish 3似乎将我的Java EE 6 Web服务部署到了错误的URL,而我无法弄清楚原因。这就是我到目前为止所做的:
我的网络服务定义如下:
@WebService(name = "HelloService")
public interface HelloService
{
@WebMethod
String sayHello(String name);
}
将服务实现为无状态EJB:
@WebService(serviceName = "HelloWebService", portName = "HelloServicePort", endpointInterface = "helloServicePackage.HelloService")
@Stateless
public class HelloServiceImpl implements HelloService
{
public String sayHello(String name)
{
return "Hello " + name;
}
}
要在Glassfish上部署,我使用sun-ejb-jar.xml:
<sun-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>HelloServiceImpl</ejb-name>
...
<webservice-endpoint>
<port-component-name>
HelloService
</port-component-name>
<endpoint-address-uri>
Services/HelloService
</endpoint-address-uri>
</webservice-endpoint>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
然后Gassfish将我的服务部署到URL // HelloWebService / HelloServiceImpl,这不是我想要的。
但是,如果我省略了endpointInterface定义并直接在服务实现上使用名称,如
@WebService(serviceName = "HelloWebService", portName = "HelloServicePort", name= "HelloService")
@Stateless
public class HelloServiceImpl
{
@WebMethod
public String sayHello(String name)
{
return "Hello " + name;
}
}
然后将服务正确部署到// Services / HelloService
如何修改annotations / sun-ejb-jar.xml以便部署也适用于正在使用的endpointInterface?
此致,蒂尔曼