Java中WebService实例

Java调用WebService接口实践案例 java调用webservice接口 阅读详情

Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。

Web Service的关键技术和规则:

1.XML:描述数据的标准方法.

2.SOAP:表示信息交换的协议(简单对象访问协议).

3.WSDL:Web服务描述语言.

4.UDDI:通用描述、发现与集成,他是一种独立于平台,基于XML语言的用于在互联网上描述商务的协议。

 

一、利用JDK web服务api实现,这里使用基于SOAP message的Web Service:

1.首先创建一个Web Services项目,作为Web services Endpoint.

2.创建一个HelloService.java类

[c-sharp]  view plain copy
  1. package com.yjpeng.hello;  
  2.   
  3. import javax.jws.WebService;  
  4. import javax.jws.WebMethod;  
  5. import javax.xml.ws.Endpoint;  
  6.   
  7. @WebService  
  8. public class HelloService {  
  9.       
  10.     @WebMethod  
  11.     public String sayHello(String message){  
  12.         return "Hello ," + message;  
  13.     }  
  14.       
  15.     public static void main(String[] args) {  
  16.         //create and publish an endPoint  
  17.         HelloService hello = new HelloService();  
  18.         Endpoint endPoint = Endpoint.publish("http://localhost:8080/helloService", hello);  
  19.     }  
  20. }  

3.使用apt编译HelloService.java(例如: apt -d bin(bin存放编译后的文件目录) scr/com/yjpeng/hello/HelloService.java)后,会生成jaxws目录。

4.使用java com.yjpeng.hello.HelloService执行HelloService.java文件,在浏览器中输入http://localhost:8080/helloService?wsdl出现如下图

5.使用wsimport命令生成客户端:wsimport -p com.yjpeng.webservice -keep http://localhost:8080/helloService?wsdl 这时会在当前目录中生成如下文件:

6.编写好客户端文件HelloClient.java

[c-sharp]  view plain copy
  1. package com.yjpeng.hello;  
  2.   
  3. import com.yjpeng.webservice.HelloServiceService;  
  4.   
  5. public class HelloClient {  
  6.     public static void main(String[] args) {  
  7.         HelloServiceService helloServiceService = new HelloServiceService();  
  8.         com.yjpeng.webservice.HelloService helloService = helloServiceService.getHelloServicePort();  
  9.         System.out.println(helloService.sayHello("你好"));  
  10.     }  
  11.   
  12. }  

运行结果在控制台输出 hello,你好  证明利用JDK web服务API实现web service成功!

 

 

二、使用xfire框架,我这里使用的是MyEclipse集成的xfire进行测试,利用xfire开发WebService可以有三种方法:

a.一种是从JavaBean中生成。

b.一种是从wsdl文件中生成。

c.一种是自己建立webservice。

 

具体实现步骤如下:

1.用Myeclipse建立webService工程(注意:Web Service&J2EE Details中的Framework选XFire),目录结构如下:

2.创建IHello.java接口

[c-sharp]  view plain copy
  1. package com.yjpeng.hello;  
  2.   
  3. public interface IHello {  
  4.     public String sayHello(String message);  
  5. }  

3.创建IHelloImpl.java实现IHello.java接口

[c-sharp]  view plain copy
  1. package com.yjpeng.hello;  
  2.   
  3. public class IHelloImpl implements IHello {  
  4.   
  5.     public String sayHello(String message) {  
  6.         return message;  
  7.     }  
  8. }  

4.修改Service.xml文件,加入以下代码

 <service>
 <!-- 为该Service起一个名字 -->
  <name>HelloService</name>
  <!-- service的接口类 -->
  <serviceClass>
  com.yjpeng.hello.IHello
  </serviceClass>
  <!-- service的接口实现类-->
  <implementationClass>
  com.yjpeng.hello.IHelloImpl
  </implementationClass>
  <!-- wsdl的样式-->
  <style>wrapped</style>
  <use>literal</use>
  <scope>application</scope>
 </service>

5.把该Web Service项目部署到tomcat里面启动tomcat在浏览器地址栏输入http://localhost:8080/TestWebServices/services/Hello?wsdl 出现如下图

6.然后在展开HelloService后面的wsdl可以看到

7.创建一个客户端HelloClient.java类

[c-sharp]  view plain copy
  1. import java.net.MalformedURLException;  
  2. import java.net.URL;  
  3.   
  4. import org.codehaus.xfire.XFireFactory;  
  5. import org.codehaus.xfire.client.Client;  
  6. import org.codehaus.xfire.client.XFireProxyFactory;  
  7. import org.codehaus.xfire.service.Service;  
  8. import org.codehaus.xfire.service.binding.ObjectServiceFactory;  
  9.   
  10. import com.yjpeng.hello.IHello;  
  11.   
  12. public class HelloClient {  
  13.     public static void main(String[] args) {  
  14.         Service s = new ObjectServiceFactory().create(IHello.class);  
  15.         XFireProxyFactory xf = new XFireProxyFactory(XFireFactory.newInstance().getXFire());  
  16.         String url="http://192.168.122.128:8080/TestWebServices/services/HelloService";  
  17.         IHello hello;  
  18.         try {  
  19.             hello = (IHello)xf.create(s, url);  
  20.             System.out.println(hello.sayHello("你好"));  
  21.         } catch (MalformedURLException e) {  
  22.             e.printStackTrace();  
  23.         }  
  24.         try {  
  25.             //这个是在java端调用.net写的远程Web Service 如果调用本机写的只需要把URL中的地址换成本机能访问的地址即可  
  26.             Client c = new Client(new URL("http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl"));  
  27.             Object[] o = c.invoke("qqCheckOnline", new String[]{"271751507"});  
  28.             System.out.println(o.length);  
  29.         } catch (Exception e) {  
  30.             e.printStackTrace();  
  31.         }  
  32.     }  
  33. }  

运行HelloClient.java类可以输出 你好            1.

三、使用axis1.4开发webservice方法

首先下载axis1.4包和tomcat服务器,并将解压后的axis1.4包下面的webapps下的axis目录复制到tomcat服务器的webapps文件夹中。axis支持三种Web Service的部署和开发,分别为:

a.Dynamic Invocation Interface(DII)

b.Stubs 方式

c.Dynamic Proxy方式

1.编写DII(Dynamic Invocation Interface)方式Web Service

a.编写服务程序HelloClient.java

[c-sharp]  view plain copy
  1. public class HelloClient  
  2. {  
  3.     public String getName(String name){  
  4.         return "hello," + name;  
  5.     }  
  6. }  

b.将HelloClient.java文件拷贝到axis_home下,重命名为HelloClient.jws.

c.访问链接http://localhost:8080/axis/HelloClient.jws?wsdl页面显示axis自动生成的wsdl文件

d.编写访问服务的客户端TestHelloClient.java需要导入相应的axis.jar包,在下载的axis的WEB-INF/lib/目录下。

[c-sharp]  view plain copy
  1. package com.yjpeng.webservice;  
  2.   
  3. import java.net.URL;  
  4. import javax.xml.namespace.QName;  
  5. import org.apache.axis.client.Call;  
  6. import org.apache.axis.client.Service;  
  7.   
  8. public class TestHelloClient {  
  9.     public static void main(String[] args){  
  10.         try{  
  11.             String endpoint = "http://localhost:8080/axis/HelloClient.jws";  
  12.             Service service = new Service();  
  13.             Call call = (Call)service.createCall();  
  14.             call.setOperationName(new QName(endpoint, "getName"));  
  15.             call.setTargetEndpointAddress(new URL(endpoint));  
  16.             String result = (String) call.invoke(new Object[]{"张三"});  
  17.             System.out.println(result);  
  18.         }catch (Exception e) {  
  19.             e.printStackTrace();  
  20.         }  
  21.     }  
  22. }  

运行TestHelloClient.java在控制台输出hell,张三,测试成功.

2.编写Dynamci Proxy方式访问服务

a.编写部署服务端程序,用上边DII方式使用的HelloClient.java

[c-sharp]  view plain copy
  1. public class HelloClient  
  2. {  
  3.     public String getName(String name){  
  4.         return "hello," + name;  
  5.     }  
  6. }  

b.编写代理接口HelloClientInterface.java需要扩展java.rmi.Remote类

[c-sharp]  view plain copy
  1. package com.yjpeng.dynamic.proxy;  
  2.   
  3. import java.rmi.Remote;  
  4. import java.rmi.RemoteException;  
  5.   
  6. public interface HelloClientInterface extends Remote {  
  7.     public String getName(String name) throws RemoteException;  
  8. }  

c.编写访问服务的客户端TestHelloClient.java

[c-sharp]  view plain copy
  1. package com.yjpeng.dynamic.proxy;  
  2.   
  3. import java.net.URL;  
  4.   
  5. import javax.xml.namespace.QName;  
  6. import javax.xml.rpc.Service;  
  7. import javax.xml.rpc.ServiceFactory;  
  8.   
  9. public class TestHelloClient {  
  10.     public static void main(String[] args){  
  11.         try{  
  12.             String wsdlUrl = "http://localhost:8080/axis/HelloClient.jws?wsdl";  
  13.             String nameSpaceUrl = "http://localhost:8080/axis/HelloClient.jws";  
  14.             String serviceName = "HelloClientService";  
  15.             String portName = "HelloClient";  
  16.             ServiceFactory serviceFactory = ServiceFactory.newInstance();  
  17.             Service afService = serviceFactory.createService(new URL(wsdlUrl), new QName(nameSpaceUrl, serviceName));  
  18.             HelloClientInterface proxy = (HelloClientInterface)afService.getPort(new QName(nameSpaceUrl, portName),  
  19.                     HelloClientInterface.class);  
  20.             System.out.println(proxy.getName("张三"));  
  21.         }catch (Exception e) {  
  22.             e.printStackTrace();  
  23.         }  
  24.     }  
  25. }  

运行TestHelloClient.java在控制台输出hell,张三,测试成功.

 

四、使用axis2开发webservice

研究中....

 

五、在java web项目中开放一个webservice接口实例

1.引入需要的jar包 
 

2.创建一个接口类IAddNumbers.java

[c-sharp]  view plain copy
  1. package com.yjpeng.webservice;  
  2.   
  3. public interface IAddNumbers {  
  4.     public int addNumbers(int a, int b);  
  5. }  

3.创建一个AddNumberImpl.java实现IAddnumbers.java接口类

[c-sharp]  view plain copy
  1. package com.yjpeng.webservice;  
  2.   
  3. import javax.jws.WebService;  
  4.   
  5. import com.sun.xml.ws.transport.http.servlet.WSServlet;  
  6.   
  7. @WebService(targetNamespace="http://webservice.yjpeng.com", serviceName="AddNumberImplService",  
  8.         portName="AddNumberImpl")  
  9. public class AddNumberImpl implements IAddNumbers {  
  10.     public int addNumbers(int a, int b) {  
  11.         return a + b;  
  12.     }  
  13. }  

4.在WEN-INF目录下创建一个sun-jaxws.xml文件

[c-sharp]  view plain copy
  1. <?xml version="1.0"?>  
  2. <endpoints version="2.0"  
  3.   xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">  
  4.   <endpoint name="AddNumberImpl"   
  5.      implementation="com.yjpeng.webservice.AddNumberImpl"  
  6.      url-pattern="/addNumberImpl"/>  
  7.  </endpoints>  
  8.         

5.在web.xml文件中增加

[c-sharp]  view plain copy
  1. <servlet>  
  2.     <servlet-name>AddNumberService</servlet-name>  
  3.     <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>  
  4.     <load-on-startup>1</load-on-startup>  
  5. </servlet>  
  6. <servlet-mapping>  
  7.     <servlet-name>AddNumberService</servlet-name>  
  8.     <url-pattern>/addNumberImpl</url-pattern>  
  9. </servlet-mapping>  
  10. <listener>  
  11.     <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>  
  12. </listener>  

6.部署web项目 启动相应部署服务器。访问http://localhost:8080/TestJaxWebService/addNumberImpl?wsdl 这样每次启动web服务器就开放了一个web service的接口。

SAP和Java系统的Webservice实例 简介         关于Webservice的概念和原理,简单来讲,Webservice是一种基于SOAP传输协议,用WSDL描述,用XML封装数据的接口技术。由于其跨平台、跨防火墙、开发成本低、开发周期短等优势而被广泛应用,但也有局限性,包括传输负载大、没有统一的实现模型等 阅读详情

相关推荐

怎么选?一文读懂12种SPC控制图,从基础到进阶,再到Python代码实现

本文系统介绍了12种常用SPC控制图的应用场景和特点,包括计量型(Xbar-R图、Xbar-s图、I-MR图等)、计数型(P图、NP图、U图等)及进阶控制图(EWMA图、CUSUM图、多元控制图)。文章强调控制图是SPC的核心工具,能有效区分过程变异类型,实现"预防优于检测"的质量管理目标。通过数据示例和Python代码展示了各类控制图的实现方法,为质量管理人员提供了实用参考。

m0_56592100的博客 4161

WebService简单案例实例

本周工作日即将结束,下周项目经理安排了一项任务可能需要使用到webservice,但本人之前尚未使用过,网上查了一些案例看了看 在此小记一篇留作日后回首也希望可以帮助到查看者朋友1、什么是WebService?WebService是一种远程调用技术,也叫XML Web Service WebService,是一种可以接收从Internet或者Internet上的其他系统中传递过来的请求,轻量级的独...

cm777的博客 3万+

PX4飞控与MAVROS实战:从零搭建无人机ROS通信环境(附常见报错解决)

本文详细介绍了如何从零搭建PX4飞控与ROS的通信环境,重点解析了MAVROS的安装、硬件连接、串口权限配置以及坐标系转换等核心步骤。针对GeographicLib数据下载失败、串口权限不足等常见报错提供了实用解决方案,并附有Offboard模式控制的代码示例,帮助开发者快速建立稳定的无人机ROS开发环境。

dapp9builder的博客 336

WebService介绍及使用(Java)

本文章主要是本人对于别人的博客的总结,源码和原文链接会在文末列出。

qq_61863348的博客 6781

R语言基础之R语言入门

R语言最初是由新西兰奥克兰大学统计系的教授Ross Ihaka和Robert Gentleman在S语言基础上开发完成的。是一门解释性语言。在我看来R语言是一门数学性极强的语言,或者说这是一门为数学而生的语言,因为其具有极其出色的计算与统计分析能力...

weixin_46912400的博客 5万+

codemirror6 制作markdown编辑器(源码模式)

总体上感觉能用,但是不怎么友好,官方文档有点散乱,而且关键字高亮功能是独立出去的,去官方文档找半天,也没找到怎么改。EditorView.theme可以往EditorView模块中修改CSS的样式,从而影响编辑器的样式展示。"### 测试\n\n```javascript\nlet x = 'y'\n```"这个插件中的markdown语法的高亮样式。//这里指定markdown中代码块使用的解析扩展。开头的class样式,并且还需要在选择器前面添加。//markdown语言解析扩展。

qq_43203949的博客 1784

Java开发webservice 的完整实例

java实现webservice实例 文章分类:Java编程 今天下午突然想研究下WEBSERVICE,从网上找了好多实例,但很多写的让人实在难以恭维,花了三个小时的圈圈转后总算搞通了,其实也挺简单的,这里特别感谢http://www.liuzm.com/article/java/992.htm这篇文章,总算让我弄明白了,现在贴出我的实例步骤,感谢那个博主的同时,与大家共同分享。 一: 首先

maxiaokun55的专栏 763

2026年最值得学习的十大 SAP 开发技术

在这辞旧迎新之际,我想和大家聊聊我心中的2026年我仍然愿意持续投入时间去学习的一些 SAP 开发技术。因为笔者水平和视野局限,加上这份清单有笔者主观兴趣爱好在内,可能大家对清单上罗列的技术有不同意见,欢迎大家在评论区发表自己的见解。下面是笔者列出的十个技术方向,排名不分先后。因为精力有限,2026年我很可能只会选择其中一两个自己最感兴趣的方向去深耕。每项技术后面都提供了链接,方便大家看完就开始学习。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1524

java 的webservice开发_Java开发webservice 的完整实例

java实现webservice实例文章分类:Java编程今天下午突然想研究下WEBSERVICE,从网上找了好多实例,但很多写的让人实在难以恭维,花了三个小时的圈圈转后总算搞通了,其实也挺简单的,这里特别感谢http://www.liuzm.com/article/java/992.htm这篇文章,总算让我弄明白了,现在贴出我的实例步骤,感谢那个博主的同时,与大家共同分享。一:首先创建个WEB工...

weixin_42519489的博客 524

科研绘图系列:R语言折线图(linechart plots)

科研绘图系列:R语言折线图(linechart plots)

专注生信领域 1272

【100%通过率】2023华为od机试C卷【电脑病毒感染】C语言 实现

一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1.

MISAYAONE的博客 1044

Java WebService 简单实例

你是否曾遇到过需要在不同平台或语言之间进行数据交换的情况?或者你是否希望将你的业务逻辑封装成服务,供其他应用调用?如果你的答案是肯定的,那么WebService将是你需要了解的技术之一。

LA1245780的博客 570

PDN分析实战:电源完整性设计与Altium PDN Analyzer全流程指南

电源完整性(PI)是嵌入式硬件系统稳定运行的基础能力,其核心在于控制电流密度与电压降两大物理量。基于欧姆定律与热-电耦合原理,PDN分析将抽象的电源噪声问题转化为可量化、可定位的几何与电气参数优化过程。该技术显著提升系统抗干扰能力、降低复位与ADC漂移等隐性故障率,并直接支撑EMC合规性设计。典型应用场景包括电机驱动板、Wi-Fi模块、STM32/ESP32等资源受限型MCU供电网络验证。本文以Altium Designer为工具平台,结合IPC-2152标准与真实工程案例,详解从功率预算、模型构建到瓶颈定

weixin_28949937的博客 229

java webservice实例教程

java webservice实例教程 最近在学习web services,网上先关的资料不多,讲的都是很基础,例子也很简单,自己动手敲了敲在这里和大家分享一下,希望能对初学者有所帮助。 Web Services服务器端开发 服务器端开发用的是XFire,版本是1.2.6,XFire现在已经成apache下面的一个项目CXF的一部分了,老早就不更新版本了,XFire过不过时...

u010548226的博客 249

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

java实现webservice实例

http://yangjizhong.iteye.com/blog/579511

aaa1117a8w5s6d的专栏 669

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java webservice 实例

java webservice 实例 by hgwayen 实验目的 1.实现一个具有WebService功能的分布式对象类,能够实现求两个整数的最大值的功能。 2.在另一台计算机(虚拟机)上,编写客户端程序,通过WebService技术访问远程的基于WebService的分布式对象Max, 达到求两个整数的最大值的功能。 一、创建并运行HelloWorldWebService.java。 1.在classpath路径下新建/rs_midtest、/rs_

qq_46013859的博客 1313

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

webservice java_WebService入门实例教程

什么是WebService通过使用WebService,您的应用程序可以向全世界发布信息,或提供某项功能,它是基于Web的服务,通过Web进行发布、查找和使用。WebService脚本平台需支持XML+HTTP。HTTP协议是最常用的因特网协议。XML提供了一种可用于不同的平台和编程语言之间的语言。为什么要使用WebService最重要的事情是协同工作。1.跨平台调用(WebService不局限于...

weixin_34518190的博客 301

php webservice java,PHP调用JAVA的WebService简单实例

/** Created on 2011-10-12* Author wanghao** package_name/userLoginClient.php*/header("Content-Type: text/html;charset=utf-8");// Pull in the NuSOAP coderequire_once ("libs/nusoap.php");// Create the c...

weixin_32183107的博客 118

webservice实例java_Java WebService(实战) 简单实例

一、准备工作(以下为本实例使用工具)1、MyEclipse10.7.12、JDK1.6.0_22二、创建服务端1、创建【Web Service Project】,命名为【TheService】。2、创建【Class】类,命名为【ServiceHello】,位于【com.hyan.service】包下。3、编写供客户端调用的方法,即编译方法代码。4、进行编译说明:编译失败的话,请将该项目引用的jd...

weixin_39834745的博客 1212

java services_Java WebService 开发简单实例

Web Service 是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。实际上,WebService的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、X...

weixin_36090805的博客 382

Java调用C#的WebService实例一

java call web service which is c# coding 收藏 C#接口: using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Web.Services.Description; [WebService(N

Renxi 1772
上一篇: eclipse+webservice开发实例
下一篇: 服务器端获取webservice客户端IP地址
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值