本人初次尝试用axis开发webService,刚开始写的这些记录可能存在一些小问题,过后如果对这方面有了新的掌握,会来更新今天的记录。
也希望路过各位不吝赐教,如果发现问题,可以提出来~~
1.首先需要下载axis1.4的jar包 : axis-bin-1_4.zip
2.解压后将其放在 %TOMCAT_HOME%/webapps/目录下
3.启动tomcat
4.在浏览器地址栏输入 http://localhost:8080/axis/ 有如下显示:
5.点击“Validation”,页面上会显示已有的jar包和缺少的jar包,根据提示下载jar包,使得没有err 和warning。
-----------这样我们就能确定jar包已经准备完毕
6.看网上说axis部署和发布WebService的方式有两种:JWS-及时发布,WSDD-定时发布。
其中JWS方式就是编写一个 .java文件,将其后缀名改成 .jws后拷贝到%TOMCAT_HOME%/webapps/axis/ 目录下,个人感觉这种方式怪怪的~ ~这里就直接说第二种方式了。
7.WSDD-定时发布
首先用前面下载的axis-bin-1_4.zip里面的web.xml替换掉新建的项目里的web.xml。
我写了一个很简单的.java文件:先把前面的jar到导入到项目中
8.在WEB-INF中创建一个叫 deploy-wsdd 的东西,这个东西大致就是用来部署前面写的ServiceTest类的
9.部署好该项目,启动web服务器
10.打开控制台进入%TOMCAT_HOME%/webapps/项目/WEB-INF/
11.开始部署项目:
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient �Clhttp://localhost:8082/项目名称/services/类名 deploy.wsdd
这个服务就发布成功了,同时会在%TOMCAT_HOME%/webapps/项目/WEB-INF/下新建一个
server-config.wsdd 文件。
12.这时就可以写一个客户端来访问服务了:
package com.client;
import java.net.URL;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class ClientTest {
public static void main(String[] args) throws Exception {
Service s = new Service();
Call call = (Call)s.createCall();
// 设置调用的方法名
call.setOperationName("sayHello");
//设置服务器的绝对路径
call.setTargetEndpointAddress(new URL("http://localhost:8080/axis2/services/ServiceTest?wsdl"));
// 调用方法
String val = (String) call.invoke(new Object[]{"kitty"});
System.out.println("val = "+val);
}
}
13.生成client的方法:
打开控制台进入%TOMCAT_HOME%/webapps/项目/WEB-INF/:
java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java -p client http://localhost:8082/axis/services/MessageService?wsdl
会在当前目录下生成一个client文件
14.使用刚刚生成的client来访问服务:
此时需要在deploy.wsdd中加入这个一条声明,否则会报错:
通过生成的client来访问服务的代码:
package com.client;
import java.net.URL;
import client.ServiceTestSoapBindingStub;
import client.User;
public class ClientTest {
public static void main(String[] args) throws Exception {
URL url = new URL("http://localhost:8080/axis2/services/ServiceTest");
ServiceTestSoapBindingStub sub = new ServiceTestSoapBindingStub(url, new Service());
User u = new User();
u.setName("迈克");
u.setAge("18");
String val = sub.helloUser(u);
System.out.println("val = "+val);
}
}
~~~~~待续,未完!