axis全称Apache EXtensible Interaction System 即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。
最近在项目里面使用了webservices技术,但是框架 客户那边已经选择好了。 服务端已经完成了。我们没有选择。只能调用。
这边客户端是使用的axis1.x 服务端使用的是CXF 2.7 下面我们就简单的写一个用例 来介绍下webservices搭建和调用。
首先 我们到http://cxf.apache.org上面下载cxf2.7版本。
在Eclipse里面新建一个Java工程 把jar增加到项目里面。在src下面新建一个包 me.service.biz
下面我们开始新建一个接口:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package
me.service.biz;
import
javax.jws.WebMethod;
import
javax.jws.WebParam;
import
javax.jws.WebService;
@WebService
public
abstract
interface
EwmBiz {
@WebMethod
public
String getEwmmethodFor(
@WebParam
(name=
"text"
) String text)
throws
Exception;
}
|
在包me.service.biz.impl下面新建一个实现类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package
me.service.biz.impl;
import
javax.jws.WebService;
import
me.service.biz.EwmBiz;
@WebService
(endpointInterface=
"me.service.biz.EwmBiz"
,name=
"EwmBiz"
)
public
class
EwmBizImpl
implements
EwmBiz{
@Override
public
String getEwmmethodFor(String text)
throws
Exception {
System.out.println(
"parameter is =======>>>> "
+ text);
return
"parameter is =======>>>> "
+ text;
}
}
|
我们的接口就完成了 下面我们写一个main方法来启动服务端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package
me.service;
import
me.service.biz.EwmBiz;
import
me.service.biz.impl.EwmBizImpl;
import
org.apache.cxf.endpoint.Endpoint;
import
org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public
class
ServiceRun {
public
static
void
main(String[] args) {
System.out.println(
"Starting Server"
);
EwmBiz ewmBiz =
new
EwmBizImpl();
String address =
"http://localhost:8090/EwmBiz"
;
javax.xml.ws.Endpoint.publish(address, ewmBiz);
System.out.println(
"服务启动完成。。。。"
);
}
}
|
上面启动一下 我们的服务端就完成了。
下面我们新建一个Java工程 完成client 客户端的调用 把axis下面的jar全部加到lib下面 在加一个commons-logging.jar
在src下面新建一个Java类
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package
me.client;
import
java.net.URL;
import
javax.xml.namespace.QName;
import
javax.xml.rpc.ParameterMode;
import
org.apache.axis.client.Call;
import
org.apache.axis.client.Service;
public
class
ClientRun {
public
static
void
main(String[] args)
throws
Exception {
String url =
"http://localhost:8090/EwmBiz"
;
Service service =
new
Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(
new
URL(url));
String targetNamespace =
"http://biz.service.me/"
;
QName qName =
new
QName(targetNamespace,
"getEwmmethodFor"
);
call.setOperationName(qName);
// QName qName2 = new QName(targetNamespace, "");
call.addParameter(
"text"
,
null
,ParameterMode.IN);
String message = (String) call.invoke(
new
Object[]{
"yangzhongren"
});
System.out.println(message);
}
}
|
这样我们测试一下 可以的 是调用通了。
引自:http://my.oschina.net/superman158/blog/337264