浅谈Axis
2013-06-26 17:08
120 查看
Axis,生于apache,死于apache。但由于其诞生时间早,现在仍占一席之地。
由于工作需求,现需要将一个老旧的框架进行升级与重构。其中框架里面的ws是由axis来完成的。
说实话,心里有些抵触,毕竟习惯了很多优雅的设计,再过来看Axis,有些难以适从。
所以在开发的工作当中,总会先入为主的认为错误是由于Axis导致的,而忽略了真正的原因。(这是个BUG呀)
下面简单列两条吧。共勉:
1。 axisclient连不通jax呀
package com.linpeng.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class Hello {
@WebMethod(operationName = "getRemindInfo")
public String getRemindInfo(String requestStr) {
System.out.println("From Client PT :" + requestStr);
return "Hello " + requestStr;
}
} 就这么简单的Service。
org.apache.axis.client.Service service = new org.apache.axis.client.Service();
Call call = (Call) service.createCall();
call.addParameter(new javax.xml.namespace.QName("", "requestStr"),
new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"),
javax.xml.rpc.ParameterMode.IN);
call.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
call.setOperationName(new javax.xml.namespace.QName(request
.getParameter("namespace"), request
.getParameter("operationname")));
call.setTimeout(10000);
call.setTargetEndpointAddress(new java.net.URL(request.getParameter("wsdl")));
AuthenticatedUser user = SecurityUtil.getCurrentUser();
String requestStr = "Who";
result = call.invoke(new Object[] { requestStr });调用也非常简单。
可是在Endpoint那边就是没收到内容。尔后改用SoapUI进行测试,以及自己写jax-client测试。发现都能拿到数据。
解决:加上@WebParam(name = "requestStr") 即可。
由于工作需求,现需要将一个老旧的框架进行升级与重构。其中框架里面的ws是由axis来完成的。
说实话,心里有些抵触,毕竟习惯了很多优雅的设计,再过来看Axis,有些难以适从。
所以在开发的工作当中,总会先入为主的认为错误是由于Axis导致的,而忽略了真正的原因。(这是个BUG呀)
下面简单列两条吧。共勉:
1。 axisclient连不通jax呀
package com.linpeng.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class Hello {
@WebMethod(operationName = "getRemindInfo")
public String getRemindInfo(String requestStr) {
System.out.println("From Client PT :" + requestStr);
return "Hello " + requestStr;
}
} 就这么简单的Service。
org.apache.axis.client.Service service = new org.apache.axis.client.Service();
Call call = (Call) service.createCall();
call.addParameter(new javax.xml.namespace.QName("", "requestStr"),
new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"),
javax.xml.rpc.ParameterMode.IN);
call.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
call.setOperationName(new javax.xml.namespace.QName(request
.getParameter("namespace"), request
.getParameter("operationname")));
call.setTimeout(10000);
call.setTargetEndpointAddress(new java.net.URL(request.getParameter("wsdl")));
AuthenticatedUser user = SecurityUtil.getCurrentUser();
String requestStr = "Who";
result = call.invoke(new Object[] { requestStr });调用也非常简单。
可是在Endpoint那边就是没收到内容。尔后改用SoapUI进行测试,以及自己写jax-client测试。发现都能拿到数据。
解决:加上@WebParam(name = "requestStr") 即可。
相关文章推荐
- java:浅谈axis调用webservice接口
- Turbc 2.0 浅谈
- MyEclipse内存不足之JVM内存浅谈 JAVA-OPTS引发的思考
- 浅谈技术管理:做一个有产品思维的程序员
- iOS 技术浅谈之第三篇(MVC设计模式)
- 浅谈c++的继承
- 浅谈Android动画(变换动画)
- 浅谈Java虚拟机
- 浅谈PHP开发团队的管理之道
- 浅谈android的selector背景选择器
- 浅谈软件中权限的问题
- 浅谈影响项目成败的几个方面
- 浅谈SuperMap iMobile for Android在Android Studio平台开发应用
- 浅谈数组(一)
- Java定时任务调度工具详解之Quartz篇(中级)一:浅谈JobExecutionContext&JobDatai&浅谈Trigger
- Eclipse使用Axis生成WebService客户端的过程
- 浅谈软件开发定律系列之帕金森定律(Parkinson’s Law)
- 浅谈系统拆分
- 浅谈PHP Extension的开发——基础篇
- 黑马程序员 浅谈---> JAVA指针问题