带有包名的webservice
上次和大家说过一个比较简单的webservice,那个webservice是没有包名的。但是在实际应用中包名是一定会有的。只有这样才能进行多人开发,这样做webservice的发布就多了一道工序,但这个其实也是比较简单的。这次的webservice就比上次写复杂一点。下面就来看看怎么做吧 1.写一个vo类,这个类在后面会被使用到 public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [username=" + username + ",password=" + password + "]"; } } 2.写一个service类 import java.util.*; public class DifficultService { public int[] getOneArray(int i) { // 取得一个数组 int array[] = new int[i]; for (int k = 0; k < i; k++) { array[k] = new Random().nextInt(10); } return array; } public String[][] get2Array() { return new String[][] { { "中国","上海" },{ "中国","北京" },"美国","英国" } }; } public User getUser() { User u = new User(); u.setUsername("陈瑞银"); u.setPassword("123456"); return u; } } 3.为了操作方便,可以在F盘(或随便)建个“MyDemo”文件夹 4.在MyDemo里在建3个文件夹,分别是META-INF,vo,service,vo里面就放User的class文件,service就放DifficultService的class文件,META-INF里面放个services.xml.这个xml内容如下 <!-- ~ Licensed to the Apache Software Foundation (ASF) under one ~ or more contributor license agreements. See the NOTICE file ~ distributed with this work for additional information ~ regarding copyright ownership. The ASF licenses this file ~ to you under the Apache License,Version 2.0 (the ~ "License"); you may not use this file except in compliance ~ with the License. You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing,~ software distributed under the License is distributed on an ~ "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY ~ KIND,either express or implied. See the License for the ~ specific language governing permissions and limitations ~ under the License. --> <service name="DifficultService"> <description> Web Service </description> <parameter name="ServiceClass"> service.DifficultService </parameter> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> </messageReceivers> </service>这里的service最好和service类一致,就像上面那样。 4.给资源打包这里建议使用aar包必须确保已经配置好了环境变量 在此之前必须确保已经配置好了环境变量,之后进入cmd,进入MyDemo所在目录,使用打包命令就可以了,截图如下 这里需要注意后面有一个空格和一个点,之后回车打包就完成了。 5.发布webservice,把打好的aar包复制到tomcat安装目录的webappsaxis2WEB-INFservices下面,启动tomcat就可以了 6.查看webservice是否发布成功 在浏览器地址栏输入http://localhost:8080/axis2/services/listServices会出现如下界面 只要看到这个界面,就说明webservice已经发布成功了 7.写一个客户端程序来访问这个webservice import javax.xml.namespace.QName; import org.apache.axis2.*; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; public class Client { public static void main(String args[]) throws Exception{ RPCServiceClient client=new RPCServiceClient(); Options option=client.getOptions(); String s="http://localhost:8080/axis2/services/DifficultService"; EndpointReference ref=new EndpointReference(s); option.setTo(ref); QName qname=new QName("http://service","getOneArray"); Object results[]=client.invokeBlocking(qname,new Object[]{3},new Class[]{int[].class}); int[] array=(int[])results[0]; for(int i=0;i<array.length;i++){ System.out.println(array[i]); } System.out.println("==========================="); qname=new QName("http://service","get2Array"); results=client.invokeBlocking(qname,new Object[]{},new Class[]{String[][].class}); String str[][]=(String[][])results[0]; for(int i=0;i<str.length;i++){ for(int k=0;k<str[i].length;k++){ System.out.println(str[i][k]); } } //qname=new QName("http://ws.apache.org/axis2","getUser"); qname=new QName("http://service","getUser"); results=client.invokeBlocking(qname,new Class[]{User.class}); User u=(User)results[0]; System.out.println(u); } } 这样子就可以了,来看一下效果截图 到这里程序就写好了,如果上面有什么写的不清楚的可以给我留言。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |