上次和大家说过一个比较简单的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 @R_839_4045@ion ~ 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安装目录的webapps\axis2\WEB-INF\services下面,启动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); } }
这样子就可以了,来看一下效果截图
到这里程序就写好了,如果上面有什么写的不清楚的可以给我留言。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。