我在apache后面使用cxf和jetty来通过soap公开web服务。目标是在所有情况下在http://localhost:9000上启动jetty并使用apache代理,但让自动生成的wsdl显示一个适合其运行环境的soap:地址(例如http://api.testing.example.com,{{3 },http://api.uat.example.com)。似乎生成的wsdl2java * Service类接受wsdl的URL,并且必须既作为开始的“位置”,又作为soap:address中返回的字符串。这必须是可配置的,但并不明显,所以建议值得赞赏。
更清晰一点 - 我通过Spring将“WsdlURL”传递给Service类的构造函数(到目前为止只有https://api.example.com工作)。我需要解决这个问题的解决方案是在cxf.cml,cxf-.xml,spring或其他配置文件中进行配置更改,而不是在代码中,因为此参数将根据其所在的环境而更改展开。
答案 0 :(得分:3)
jaxws:端点配置事物有一个“publishedEndpointURL”,如果指定了它,它将被用来代替地址。知道servlet正确使用它,而不是100%肯定在码头上。他们分享了很多代码,因此它可以工作。
答案 1 :(得分:0)
试试@WebService(wsdlLocation="http://yourdesiredlocation")
。不确定它是否会起作用。