还是在WebService技术,服务端and客户端JDK-wsimport工具(一)的基础上实现。新建一个包:com.aixs2client。目录结构如下:

一、服务端:

  1、还是使用com.webservice包里的WebServiceImp.java 文件,但是不使用本地发布,所以需要删除发布代码。

  WebServiceImp.java:

package com.webservice;

import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class WebServiceImp {
@WebMethod
public String getInfo(String id){
String info="";
if (id.equals("1")) {
info="张三";
}else if (id.equals("2")) {
info="李四";
}else if(id.equals("3")){
info="王五";
}else if(id.equals("4")) {
info="赵六";
}else {
info="用户不存在";
}
return info;
}
}

 2、WEB-INF下新建一个xml文件,sun-jaxws.xml,内容如下:

endpoint 表示使用此配置文件里的参数发布
name:发布的名称,名字可以随意
implementation:发布的服务的实现类url-pattern:访问wsdl文档时的路径
1 <?xml version="1.0" encoding="UTF-8"?>
2 <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
3 <endpoint name="WebServiceDemo" implementation="com.webservice.WebServiceImp" url-pattern="/WebServiceDemo">
4 </endpoint>
5 </endpoints>

3、在WEB-INF下的web.xml中加入servlet配置.内容如下:

  web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<servlet>
<servlet-name>jaxws</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jaxws</servlet-name>
<url-pattern>/WebServiceDemo</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
load-on-startup:是否应该在web应用程序启动的时候就加载这个servlet,调用servlet中的init()方法,如果值为正整数或者0时,表示容器在应用启动时就加载并初始化这个servlet,值越小,servlet的优先级越高,就越先被加载。
url-pattern:请求的路径

4、配置完成后,将项目部署到Tomcat中,并在浏览器地址栏输入servlet请求的地址:http://127.0.0.1:8080/WebService/WebServiceDemo。

可以看到如下页面:

点击WSDL后面的url,看到wsdl文档:

此时服务端完成,服务已经随着Tomcat的启动和关闭,可以使用Soap UI进行测试。

二、客户端

1、在com.aixs2client包下新建ClientService.java

 package com.aixs2client;
import org.apache.axiom.om.OMElement;
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 javax.xml.namespace.QName;
public class ClientService {
public static String getServiceInfo(String Id) throws Exception {
String result = null;
//名称空间
String nameSpace="http://webservice.com/";
//服务的方法
String method="getInfo";
//wsdl文档地址
String Url = "http://127.0.0.1:8080/WebService/WebServiceDemo?wsdl";
QName qname = new QName(nameSpace,method);
Object[] param = new Object[] { Id };
try {
//创建客户端实例
RPCServiceClient client = new RPCServiceClient();
Options options = new Options();
options.setTo(new EndpointReference(Url));
options.setAction(nameSpace+method);//调用.net等webservice服务是务必加上
client.setOptions(options);
OMElement element = client.invokeBlocking(qname, param);
//获取服务端返回的结果
result = element.getFirstElement().getText();
System.out.println(result);
} catch (AxisFault e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
try {
getServiceInfo("1");
getServiceInfo("3");
getServiceInfo("4");
getServiceInfo("100");
} catch (Exception e) {
e.printStackTrace();
}
} }

运行客户端代码,调用服务端方法,结果如下:

WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)的更多相关文章

  1. socket小程序写一个客户端,实现给服务端发送hello World字符串,将客户端发送的数据变成大写后返回

    写一个客户端,实现给服务端发送hello World字符串,将客户端发送的数据变成大写后返回 本机id是192.168.xx.xy 服务端 import socket soc = socket.soc ...

  2. 菜鸟之webservice(一) 服务端搭建

    首先说一下,为什么取名叫菜鸟之webservice,由于本人技术真的不咋滴,写博客仅仅是为了对所学知识的总结.webservice对于我来说一直都是高大上的感觉,一个java web和javase都没 ...

  3. webservice调用服务端数据时给soapenv:Envelope 添加自定义的命名空间

    最近做第三方接口,服务端需要 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/&qu ...

  4. WebService从服务端到客户端的用例

    1.首先编写Wsdl(基于契约优先的方式),要注意的是命名空间(若是使用include或import)最好使用一致的,代码如下: <?xml version="1.0" en ...

  5. 自己封装的Socket组件,实现服务端多进程共享Socket对象,协同处理客户端请求

    DotNet.Net.MySocket是SLB.NET(Server Load Balance服务器负载均衡)项目中的核心组件. 在实际的项目中发现,单进程的服务端处理高并发的客户请求能力有限. 所以 ...

  6. SpringCloud系列九:SpringCloudConfig 基础配置(SpringCloudConfig 的基本概念、配置 SpringCloudConfig 服务端、抓取配置文件信息、客户端使用 SpringCloudConfig 进行配置、单仓库目录匹配、应用仓库自动选择、仓库匹配模式)

    1.概念:SpringCloudConfig 基础配置 2.具体内容 通过名词就可以发现,SpringCloudConfig 核心作用一定就在于进行配置文件的管理上.也就是说为了更好的进行所有微服务的 ...

  7. spring mvc + mybaties + mysql 完美整合cxf 实现webservice接口 (服务端、客户端)

    spring-3.1.2.cxf-3.1.3.mybaties.mysql 整合实现webservice需要的完整jar文件 地址:http://download.csdn.net/detail/xu ...

  8. 不同框架实现的WebService的服务端获取HttpServletRequest的方法

    一. 基于xfire实现的WebService HttpServletRequest request = XFireServletController.getRequest(); 二. 基于axis实 ...

  9. TCP状态机:当服务端主动发FIN进TIME_WAIT,客户端源端口复用会发生什么

    0X01 正常情况下TCP连接会通过4次挥手进行拆链(也有通过RST拆除连接的可能,见为什么服务器突然回复RST--小心网络中的安全设备),下图TCP状态机展示了TCP连接的状态变化过程: 我们重点看 ...

  10. .Net TCP探索(一)——TCP服务端开发(同时监听多个客户端请求)

        最近在园子里看了大神写的(面试官,不要再问我三次握手和四次挥手),忍不住写段程序来测试一番.     在网上找了很多例子,大多只实现了TCP点对点通讯,但实际应用中,一个服务器端口往往要监听多 ...

随机推荐

  1. Lorem 占位符

    Web开发者通常用lorem ipsum text来做占位符,占位符就是占着位置的一些文字,没有实际意义. 为什么叫lorem ipsum text呢? 是因为lorem ipsum是古罗马西塞罗谚语 ...

  2. wing ide 6.0 注册

    1.wing ide介绍 wing ide ,用过python的都知道是干嘛用的了吧,官网已经更新到6.0.0-1版本. 链接如下: Wing IDE Professional - Version 6 ...

  3. 熟悉LINUX系统

    常用的Shell命令 当用户登录到字符界面系统或使用终端模拟窗口时,就是在和称为shell的命令解释程序进行通信.当用户在键盘上输入一条命令时,shell程序将对命令进行解释并完成相应的动作.这种动作 ...

  4. Docker 使用入门,创建一个Nginx服务器

    运行环境: MAC Docker 版本: Docker version 17.12.0-ce, build c97c6d6 一.启动Nginx 服务器 启动Nginx 服务器,并进入模拟终端 dock ...

  5. tcp尽快尽快了

    看的撒积分卡拉斯的放假啊的顺口溜

  6. mod_php和mod_fastcgi和php-fpm的介绍,对比和性能数据

    1.php中fastcgi和php-fpm是什么东西 最近在研究和学习php的性能方面的知识,看到了factcgi以及php-fpm,发现我对他们是少之又少的理解,可以说几乎是一无所知,想想还是蛮可怕 ...

  7. mpvue 使用echarts动态绘制图表(数据改变重新渲染图表)

    最近在公司开发一款微信小程序,按照客户需求用饼状图显示当前设备状态(开机.故障.关机),于是就在网上寻找各种资料,找了很多mpvue使用关于echarts绘制图表,最终功夫不负有心人,找到一篇关于mp ...

  8. N皇后问题 各种优化

    0.问题引入 N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行.同一列.同一斜线上的皇后都会自动攻击),问有多少种摆法. 题目链接:https://ww ...

  9. connection reset by peer问题总结及解决方案

    找遍了 中英文网站,翻遍了能找的角落,发现了出现故障的原因和原理,及改如何处理,这里记录下,希望能帮助到有需要的小伙伴,少走点弯路, 以上就整理内容: connection reset by peer ...

  10. Jquery分页组件

    最近工作不是很忙,所以就看看淘宝kissy分页组件源码,感觉代码也不怎么难 容易理解,所以就按照他们的思路自己重新理一遍,来加深自己对他们的理解,同时对他们的分页组件进行一些重构(因为他们分页是做好了 ...