基于Jax-ws的几种访问服务的方式

方式1:
可以看到在WSDL中会有一个


<wsdl:portType name="CarShop">
......................
</wsdl:portType>
<service name="CarShopService">
<port name="CarShopPort" binding="tns:CarShopBinding">
<soap:address location="http://cccc.eb.com/xmlapi/shop/car/v1"/>
</port>
</service>


通过编译会自动生成所有的类型,其中有一个名为CarShopService的一个class,这就代表我们发布的服务。
如下是字节码文件的头:

@javax.xml.ws.WebServiceClient(name="CarShopService",
targetNamespace="urn:expedia:wsapi:car:v1",
wsdlLocation="com.expedia.wsapi.car.v1.wsdl")
public class com.wsapi.car.v1.CarShopService extends javax.xml.ws.Service {

通过以下这个代码我们可以在任意的地方访问这个服务。

WebServiceClient annotation =
CarShopService.class.getAnnotation(WebServiceClient.class);

wsdlUrl = new URL(CarShopService.class.getResource(
CarShopService.class.getSimpleName() + ".class"),
annotation.wsdlLocation());

qName = new QName(annotation.targetNamespace(), annotation.name());
m_service = new CarShopService(wsdlUrl, qName);
m_port = m_service.getCarShopPort();


方式2:
URL createOrderURL = new URL(m_client.getEndpoint() + "?wsdl");
QName qName = new QName("urn:com:shop:car:v1", "CarShopService");
CarShopServiceo cs = new CarShopService(buyCarURL, buyCarQName);
CarShopPort port = cs.get****();

m_client.getEndpoint():是获取这个Service部署在哪里,例如:
http://localhost:8080/CarShopService
这里就不再贴代码了。
两种方式都要创建服务,然后获取这个服务中的具体服务提供者(port).运用起来也很方便,让我们在任意的地方,只要有这个web服务存在,我们就可以通过这2种方式,去访问并调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值