背景:
我之前有过使用Apache CXF Web服务的经验,但我使用随Apache CXF发行版附带的wsdl2java工具生成服务端点接口(SEI)和服务实现有点新鲜。
任务:
我目前正致力于实施基于SOAP的Web服务,该服务将由外部系统使用。我已经定义了消息(XSD)和WSDL文件。我尝试使用Apache CXF中的wsdl2java工具生成SEI。使用JAXB类型作为输入参数并将类型返回到Web服务方法,可以正确生成SEI。
当我看一下为服务实现类生成的代码时,我看到它扩展了javax.xml.ws.Service类。此外,还会生成许多重载方法,这些方法与服务端点接口中的方法同名,并在方法名称后附加“Soap12Http”。其中一些方法采用WebServiceFeature类型的参数...而其他方法不采用任何参数。示例:
public class Query extends Service {
@WebEndpoint(name = "product_query-soap12-http")
public IQuery getProductsSoap12Http(WebServiceFeature... features) {
return super.getPort(getProductsSoap12Http, IQuery.class,features);
}
}
*其中IQuery是服务端点接口
问题:
答案 0 :(得分:0)
对于1和2,答案是否定的。生成的XXXXService类几乎是WSDL中各种SEI代理的工厂。 wsdl中的每个端点/绑定/ portType组合应该在Service对象上产生一系列“getXYZPort(...)”调用,以返回该特定SEI的实例。
对于3,上周cxf的工具中添加了一个-clientjar选项(尚未发布,需要最新的快照)可能接近所需的。