更改Apache CXF SOAP服务的default / webservices路径

时间:2015-01-30 11:59:27

标签: soap cxf jax-ws tomee

我正在使用tomEE 1.7.1和Apache CXF 2.6.14。

我有一个为WSDL第一个Web服务提供服务的组件:

        @Stateless
        @WebService(
                endpointInterface   = "com.mycompany.SecurityTokenServiceWS", 
                targetNamespace     = "http://sts.mycompany/wsdl/", 
                serviceName         = "SecurityTokenService", 
                portName            = "TokenService")
        @SOAPBinding(style = SOAPBinding.Style.RPC, use = SOAPBinding.Use.LITERAL) 
        public class TokenService implements SecurityTokenServiceWS {

        //service methods
    }

当我部署Web应用程序时,我会看到此日志:

Jan 30, 2015 12:47:22 PM org.apache.openejb.server.webservices.WsService deployApp
INFORMATION: Webservice(wsdl=http://localhost:8080//webservices/TokenService, qname={http://sts.mycompany.com/wsdl/}SecurityTokenService) --> Ejb(id=TokenService)

结果,网络服务可在以下网址获得:http://localhost:8080/webservices/TokenService

我喜欢的是该服务直接在http://localhost:8080/TokenService上运行。

我不知道“webservices”路径元素来自哪里。它不在WSDL中,也不在任何配置文件中。我的Web应用程序直接在上下文路径/(ROOT)下运行。

是否有绑定到/ webservices的神奇CXF servlet?我该如何改变这种行为?

2 个答案:

答案 0 :(得分:0)

要更改发布地址,您需要更改端点配置。现在我想你没有配置,所有都是默认的。您需要创建文件 service.xml (任何名称)并使用 web.xml CXFServlet init-parameter“ config-location “或使用 Spring

这是文件内容http://cxf.apache.org/docs/jax-ws-configuration.html

以下是如何使用spring http://cxf.apache.org/docs/writing-a-service-with-spring.html

执行此操作的示例

答案 1 :(得分:0)

这来自TomEE,它默认使用子上下文webservices。

此示例显示了如何更改它https://git-wip-us.apache.org/repos/asf?p=tomee.git;a=tree;f=examples/change-jaxws-url;h=2f88382bd4f925ec27c7305e74d361c8baf46a92;hb=ebe63371a22709a50e79c42206b5e9a0fd8946cc(有趣的文件是https://git-wip-us.apache.org/repos/asf?p=tomee.git;a=blob;f=examples/change-jaxws-url/src/main/resources/META-INF/openejb-jar.xml;h=6c0ba44b14eb2e67a550c65d890d325c8bf409b7;hb=ebe63371a22709a50e79c42206b5e9a0fd8946cc

注意:如果您只想重命名/ webservices,可以在conf / system.properties中设置tomee.jaxws.subcontext = / myothersubcontext

PS:如果你使用openejb-jar.xml解决方案,请注意,openejb-jar.xml 1.1的等价物只是ejb-deployment属性中的属性openejb.webservice.deployment.address