基于JAVA的JAX-WS开发webservice细节及注意事项

我们在日常生产开发中肯定会接触过系统对接,新系统的开发可能更多的是restful的对接,但是对于一些语言差异等还是需要webservice来进行开发的,那么有人就说了webservice的框架有很多啊,其实没有啥需要注意的,定义接口发布就可以了啊,对于一般的需求这无可话说,但是对于一些特殊业务的复杂XML,或者对一些发布的方法做一些过滤,我们就需要对发布的webservice进行详细的配置。比如比较特殊的Namespace,我们在调用webservice时候,会将报文拼接成我们需要的形式,比如我们用Axis2调用的报文如

<prefix:method xmlns:senyint="namespace">
	<prefix_sub:param xmlns:dpns="namespace_sub">?</prefix_sub:param>
</prefix:method >

我们看到了上面拼接的报文,那么我们就需要有对应的webservice来接收,这里有个问题,namespace对应webservice的两个地方,一个是方法,一个是参数,如果参数未指定namespace,而我们调用的时候指定了,则方法能调用成功,但是无法接收参数。如果我们参数指定了namespace,而我们调用的时候偶为指定,方法能调用成功,但是参数无法接收,为null;所以我们需要对参数这里的明年空间格外注意。方法的前缀我们一般都会指定,如果没有我们也会给一个默认的,所以这个一般不是问题。

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService(targetNamespace = "namespace", serviceName = "TestWsService")
@SOAPBinding(parameterStyle=ParameterStyle.BARE,style=Style.DOCUMENT,use=Use.LITERAL)
public class WsDemo {
	public static void main(String[] args) {
		WsDemo hello = new WsDemo();
		Endpoint endpoint = Endpoint.create(hello);
		endpoint.publish("http://ip:8080/testWs/services/TestWs");

		System.out.println("webservice Public Success");
	}

	@WebMethod(action = "password")
	@WebResult(name = "passwordResponse")
	public String password(@WebParam(name = "passwordXml",targetNamespace="namespace_sub")String passwordXml) {
		System.out.println(passwordXml);
		return ("消息接收成功");
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值