您的位置:首页 > 运维架构 > Apache

浅谈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") 即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java apache axis jax