用axis生成webservice服务端和客户端代码

最近,接手了公司java webservice部分的开发,攒了一些经验,为了避免后续把它丢到太空去了,现抽时间把过程记录下来。


1、webservice服务端

1)新建web project

2)新建webservice 


3)选择对应的wsdl文件直接生成服务端代码

4)webservice的地址在web.xml配置文件url-pattern节点中


2、webservice客户端

客户端支持两种方式,如果wsdl中不存在节点包含的关系(就是wsdl文件中一部分的报文结构在xsd文件中定义),就采用第一种,否则,建议第二种。

1)第一种调用方式:

String ss = "";
try {
SAXReader reader = new SAXReader();
InputStream ifile = new FileInputStream("C:\\auto.xml");
InputStreamReader ir = new InputStreamReader(ifile, "GBK");
Document document = reader.read(ir);
Element root = document.getRootElement();


ss = root.asXML();
System.out.println(ss);
} catch (Exception e) {
e.printStackTrace();
}


String url = "http://192.168.3.213:7001/com.infotech.sealprove/services/autoProve?wsdl";
Client client = null;
try {
client = new Client(new URL(url));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Object[] results;
String response = "";
try {
results = client.invoke("autoProve", new Object[] { ss });
response = (String) results[0];
} catch (Exception e) {
e.printStackTrace();
}


client是用的xfire-all-1.2.6.jar包里的类型,需要引用xfire相关的jar包

2)第二种调用方式

采用axis生成客户端代码,以下是生成过程。

用axis生成webservice服务端和客户端代码_第1张图片

用axis生成webservice服务端和客户端代码_第2张图片


以下就直接按默认下一步即可。



新建完工程之后,将对应的wsdl拷贝到工程src项目,右键wsdl文件选择webservice--generate client菜单


用axis生成webservice服务端和客户端代码_第3张图片

选择对应的wsdl文件就可以生成客户端的代码了。


生成之后,用以下的代码完成对和服务端的接口通讯:

AutoProveSOAPQSService1 client=new AutoProveSOAPQSService1Locator();
AutoProveService service = null;
try {
service = client.getAutoProveSOAPQSPort1();
} catch (ServiceException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
AutoProveRequest sAutoProveRequest=new AutoProveRequest ();

AutoProveResponse msg = null;
try {
msg = service.autoProve(sAutoProveRequest);
System.out.println(msg.toString());
System.out.println(msg.getFAULTCODE());
System.out.println(msg.getFAULTSTRING());
} catch (RemoteException e) {
// TODO Auto-generated catch block

e.printStackTrace();
}
if(msg.getFAULTCODE().equals("00000")){
System.out.println("success");
} else {
System.out.println("fail");
}

你可能感兴趣的:(Java)