一、利用axis2生成wsdl文件
1、file->New->Other->Axis2 Code Generator
2、选择第2个,点击next
3,先点击add folder->浏览选择WebService项目下的bin文件夹,然后在fully Qualified Class name中填入类路径(包括包名)
然后点击Test 测试是否正确。
点击Next
4、可以看到即将发布的WebService名称和命名空间
5、继续Next,选择wsdl文件保存目录
这样services.wsdl文件就生成了。
二、用axis2工具根据wsdl文件生成java文件,并编写客户端调用的代码
1、file->new->other->axis2 code generetor
2、选择第1项,根据wsdl文件生成Java代码,点击Next
3、然后选择第一步生成的wsdl文件
4、点击Next,就可以看到你要生成指定方法的代码的选项,我选择的是第2项
注意的是在选择PortName的时候,不同的选项将会生产不同的调用代码,其调用方式也略有不同
5、点击Next,选择代码输出保存的目录,最好不要选择WebService的目录,换一个新的Javaproject目录,不然会跟之前的文件冲突,然后点击Finish
6、打开输出的文件夹,发现多出了很多文件
三、 编写客户端代码
package test; import java.rmi.RemoteException; import java.util.List; import com.hoo.service.EditUser; import com.hoo.service.EditUserResponse; import com.hoo.service.GetUser4Array; import com.hoo.service.GetUser4ArrayResponse; import com.hoo.service.ManagerUserServiceStub; import com.hoo.service.xsd.User; public class ManagerUserServiceClient { public static void main(String[] args) throws RemoteException { /* ManagerUserServiceStub文件对应的是整个WebService * 该类中有对应于WebService中public方法的方法 * 通过实例化一个该类的对象,并调用相应的方法,就可以调用WebService的方法 * */ ManagerUserServiceStub stub = new ManagerUserServiceStub(); /* * EditUser对应的是WebService的方法,对于WebService的每个public方法,生成一个以该方法命名的类 * 但是首字母会大写 * 该类中有相应的方法editUser * */ EditUser editUser = new EditUser(); User user = new User(); user.setAddress("China"); user.setEmail("[email protected]"); user.setName("hww"); user.setId(1); User user1 = new User(); user1.setName("jsy"); user1.setEmail("[email protected]"); user1.setId(47); user1.setAddress("China"); /* * EditUser的对象要通过set方法设置方法的参数 * 比如,eidtUser(User user)方法有一个User类型的参数,那么在对应的类里面,就会有对应的设置参数的 * 方法 * */ editUser.setUser(user); /* * 对于每个方法会生成一个对应的response类 * 通过stub对象调用该方法,方法的参数是对应类的对象 * 返回值会通过response对象返回 * */ EditUserResponse eur = stub.editUser(editUser); //获取返回值 User returnUser = eur.get_return(); System.out.println(returnUser.getName()); //调用其他方法 GetUser4Array getUser4Array = new GetUser4Array(); getUser4Array.setJ(3); GetUser4ArrayResponse response1 = stub.getUser4Array(getUser4Array); User[] user_list = response1.get_return(); for(User u:user_list){ System.out.println(u.getId()); } } }
输出结果是:hww
22
23
24
Axis2发布webservice(3)--axis2生成wsdl文件,并利用wsdl文件来生成WebService的Java代码
时间: 2024-12-10 00:00:59