如何让Glassfish尊重endpoint-address-uri定义?

时间:2012-03-29 17:24:04

标签: java web-services java-ee glassfish ejb

当我使用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?

此致,蒂尔曼

0 个答案:

没有答案