WebService的一个有关问题
阅读
使用axis2-1.6.1开发webservice(Eclipse-jee-3.7,axis2-1.6.1,Tomcat-6.0.24)
网上找的例子,
ComplexTypeService类:
- Java code
import data.User; public class ComplexTypeService { public String[][] getTwoArray() { return new String[][] { { "中国", "北京" }, { "日本", "东京" }, { "中国", "上海", "南京" } }; } public User getUser() { User user = new User(0, "Jack", "Beijing"); return user; } }
User类:
- Java code
package data; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = 1715338269623256997L; private int id; private String name; private String address; public User(int id, String name, String address) { super(); this.id = id; this.name = name; this.address = address; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
下面就是部署了。
1.axis2.war包放到tomcat的webapps下解压为axis2的目录。
2.将ComplexTypeService.class文件放置到TOMCAT_HOME\webapps\axis2\WEB-INF\pojo目录下。
3.将User.class文件放置到TOMCAT_HOME\webapps\axis2\WEB-INF\data目录下(data就是User类所在的包名,自己新建的)。
网上查到另外的版本,说User.class文件应该放置在TOMCAT_HOME\webapps\axis2\WEB-INF\classes\data目录下。
这两个方法都试过了,可惜客户端调用的时候,都是找不到data.User类。
写客户端调用程序:
- Java code
package webservice; import javax.xml.namespace.QName; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; import data.User; public class ComplexTypeServiceClient { public static void main(String[] args) { RPCServiceClient rpcServClient = null; try { rpcServClient = new RPCServiceClient(); } catch (AxisFault e) { e.printStackTrace(); } Options options = rpcServClient.getOptions(); String url = "http://localhost:8080/axis2/services/ComplexTypeService"; EndpointReference endpointRef = new EndpointReference(url); options.setTo(endpointRef); //第一个服务 QName qname = new QName("http://ws.apache.org/axis2", "getTwoArray"); Object[] result = null; try { result = rpcServClient.invokeBlocking(qname, new Object[] {}, new Class[] { String[][].class }); } catch (AxisFault e) { e.printStackTrace(); } String[][] strss = (String[][]) result[0]; for (String[] strs : strss) { for (String str : strs) { System.out.print(str + '\t'); } System.out.println(); } //第二个服务 qname = new QName("http://ws.apache.org/axis2", "getUser"); try { result = rpcServClient.invokeBlocking(qname, new Object[] {}, new Class[] { data.User.class }); } catch (AxisFault e) { e.printStackTrace(); } User user = (User)result[0]; System.out.println(user.getId()); System.out.println(user.getName()); System.out.println(user.getAddress()); } }
第一个服务调用成功,第二个服务始终不行,报如下错误:
org.apache.axis2.AxisFault: data.User
阅读
上一篇:java如何调用已经写好的exe文件,求高手。 下一篇:返回列表