java webservice 接口实现方式

合集下载

java webservice 接口实现方式

java webservice 接口实现方式

java webservice 接口实现方式摘要:1.Java WebService 简介2.Java WebService 接口实现方式2.1 JAX-RPC2.2 JAX-WS2.3 JAX-WS RI2.4 JAXB正文:【Java WebService 简介】Java WebService 是一种基于Java 语言的Web 服务技术,它允许Java 开发人员创建可与其他应用程序进行交互的Web 服务。

Java WebService 技术可以帮助开发人员实现跨平台、跨语言的通信,从而满足不同应用程序之间的集成需求。

【Java WebService 接口实现方式】Java WebService 有多种接口实现方式,下面将详细介绍其中的四种:【2.1 JAX-RPC】Java API for XML RPC (JAX-RPC) 是Java WebService 的一种接口实现方式,它使用XML 格式来表示数据和方法调用。

JAX-RPC 通过将Java 对象编码为XML,然后将其发送到服务器进行解码和处理,从而实现客户端和服务器之间的通信。

【2.2 JAX-WS】Java API for XML Web Services (JAX-WS) 是Java WebService 的另一种接口实现方式,它基于XML 和WSDL(Web 服务描述语言)来描述Web 服务的接口和功能。

JAX-WS 允许开发人员使用类似于RPC 的方式来调用Web 服务,同时也支持更加复杂的Web 服务功能,如事务、安全和可靠的数据传输。

【2.3 JAX-WS RI】JAX-WS RI(Reference Implementation)是JAX-WS 的一个参考实现,它提供了一个用于创建和部署Web 服务的工具集。

JAX-WS RI 支持多种传输协议,如HTTP、HTTPS 和JMS,同时还支持多种数据格式,如XML、JSON 和Text。

javawebservice接口调用实例

javawebservice接口调用实例

Java Web Service 是一种轻量级的、基于标准的 Web 协议进行通讯的服务。

它允许在异构系统之间进行交互,并支持跨评台。

在本篇文章中,我们将介绍如何在 Java 中使用 Web Service 接口进行调用的实例。

1. 确定 Web Service 接口我们需要确定要调用的 Web Service 接口。

通常情况下,我们可以通过 WSDL(Web Services Description Language)文档来获取接口的相关信息,包括接口的位置区域、方法名以及参数列表等。

2. 创建 Java 项目在 Eclipse 或者其他 Java 开发环境中,我们可以创建一个新的 Java 项目。

在项目中,我们需要引入相关的 Web Service 库,以便在代码中进行调用。

3. 生成客户端代码通过 WSDL 文档,我们可以使用工具来生成客户端代码。

这些工具通常包括 wsimport(用于生成客户端代码)等。

生成的客户端代码将包含接口的相关信息,以便我们在代码中进行调用。

4. 编写调用代码在生成客户端代码之后,我们可以编写调用代码来实现对 Web Service 接口的调用。

在代码中,我们需要首先创建对应的 WebService 客户端实例,然后通过该实例来调用接口中的方法。

5. 编译和运行完成代码编写之后,我们需要对代码进行编译,并运行相应的测试。

在运行的过程中,我们可以观察接口的调用情况,以及调用结果。

6. 处理异常情况在实际的调用过程中,我们经常会遇到各种异常情况,比如网络连接失败、接口调用超时等。

我们需要在代码中添加相应的异常处理逻辑,以保证程序的稳定性和可靠性。

通过以上步骤,我们可以实现在Java 中对Web Service 接口的调用。

通过这种方式,我们可以实现不同系统之间的数据交互,实现数据共享和系统集成。

我们也可以利用 Web Service 在不同评台之间实现数据的传输和处理,为企业的信息化建设提供更多的可能性。

java 调用webservice的各种方法总结

java 调用webservice的各种方法总结

一、利用jdk web服务api实现,这里使用基于 SOAP message 的 Web 服务1.首先建立一个Web services EndPoint:Java代码package Hello;import javax.jws.WebService;import javax.jws.WebMethod;import javax.xml.ws.Endpoint;@WebServicepublic class Hello {@WebMethodpublic String hello(String name) {return "Hello, " + name + "\n";}public static void main(String[] args) {// create and publish an endpointHello hello = new Hello();Endpoint endpoint = Endpoint.publish("http://localhost:8080/hello", hello);}}2.使用apt 编译Hello.java(例:apt -d [存放编译后的文件目录] Hello.java ) ,会生成 jaws目录3.使用java Hello.Hello运行,然后将浏览器指向http://localhost:8080/hello?wsdl就会出现下列显示4.使用wsimport 生成客户端使用如下:wsimport -p . -keep http://localhost:8080/hello?wsdl5.客户端程序:Java代码1.class HelloClient{2.3.public static void main(String args[]) {4.5. HelloService service = new HelloService();6.7. Hello helloProxy = service.getHelloPort();8.9. String hello = helloProxy.hello("你好");10.11. System.out.println(hello);12.13. }14.15.}16.二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的利用xfire开发WebService,可以有三种方法:1一种是从javabean 中生成;2 一种是从wsdl文件中生成;3 还有一种是自己建立webservice步骤如下:用myeclipse建立webservice工程,目录结构如下:首先建立webservice接口,代码如下:Java代码1.package com.myeclipse.wsExample;2.3.//Generated by MyEclipse4.5.6.7.public interface IHelloWorldService {8.9.10.11. public String example(String message);12.13.14.15.}16.Java代码1.package com.myeclipse.wsExample;2.3.//Generated by MyEclipse4.5.6.7.public class HelloWorldServiceImpl implements IHelloWorldService{8.9.10.11. public String example(String message) {12.13. return message;14.15. }16.17.18.19.}20.修改service.xml 文件,加入以下代码:Xml代码1.2.3.<service>4.5.<name>HelloWorldService</name>6.7.<serviceClass>8.9. com.myeclipse.wsExample.IHelloWorldService10.11. </serviceClass>12.13. <implementationClass>14.15. com.myeclipse.wsExample.HelloWorldServiceImpl16.17. </implementationClass>18.19. <style>wrapped</style>20.21. <use>literal</use>22.23. <scope>application</scope>24.25.</service>26.把整个项目部署到tomcat服务器中,打开浏览器,输入http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl客户端实现如下:Java代码1.package com.myeclipse.wsExample.client;2.3.import .MalformedURLException;4.5.import .URL;6.7.8.9.import org.codehaus.xfire.XFireFactory;10.11.import org.codehaus.xfire.client.Client;12.13.import org.codehaus.xfire.client.XFireProxyFactory;14.15.import org.codehaus.xfire.service.Service;16.17.import org.codehaus.xfire.service.binding.ObjectServiceFactory;18.19.20.21.import com.myeclipse.wsExample.IHelloWorldService;22.23.24.25.public class HelloWorldClient {26.27.public static void main(String[] args) throws MalformedURLException, Exception {28.29.// TODO Auto-generated method stub30.31.Service s=new ObjectServiceFactory().create(IHelloWorldService.class);32.33.XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());34.35.String url="http://localhost:8989/HelloWorld/services/HelloWorldService";36.37.38.39. try40.41. {42.43.44.45. IHelloWorldService hs=(IHelloWorldService) xf.create(s,url);46.47. String st=hs.example("zhangjin");48.49. System.out.print(st);50.51. }52.53. catch(Exception e)54.55. {56.57. e.printStackTrace();58.59. }61. }62.63.64.65.}66.这里再说点题外话,有时候我们知道一个wsdl地址,比如想用java客户端引用.net 做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下:Java代码1.public static void main(String[] args) throws MalformedURLException, Exception {2.3.// TODO Auto-generated method stub4.5. Service s=new ObjectServiceFactory().create(IHelloWorldService.class);6.7. XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());8.9.10.11.//远程调用.net开发的webservice12.13.Client c=new Client(new URL("/webservices/qqOnlineWebService.asmx?wsdl"));15. Object[] o=c.invoke("qqCheckOnline", new String[]{"531086641","591284436"});16.17.18.19.//调用.net本机开发的webservice20.21.Client c1=new Client(new URL("http://localhost/zj/Service.asmx?wsdl"));22.23.Object[] o1=c1.invoke("HelloWorld",new String[]{});24.25.26.27.}28.三、使用axis1.4调用webservice方法前提条件:下载axis1.4包和tomcat服务器,并将axis文件夹复制到tomcat服务器的webapp文件夹中这里我就说一下最简单的方法:首先建立一个任意的java类(例如:HelloWorld.java),复制到axis 文件夹下,将其扩展名改为jws,然后重新启动tomcat,在浏览器中输入http://localhost:8989/axis/HelloWorld.jws?wsdl,就会得到一个wsdl文件,其客户端调用方法如下:Java代码1.import javax.xml.rpc.Service;2.3.import javax.xml.rpc.ServiceException;4.5.import javax.xml.rpc.ServiceFactory;6.7.import .MalformedURLException;8.9.import .URL;10.11.import java.rmi.RemoteException;12.13.import space.QName;14.15.16.17.public class TestHelloWorld {18.19.20.21.22.23. public static void main(String[] args) throws MalformedURLException, ServiceException, RemoteException {24.25. // TODO Auto-generated method stub26.27.28.29. String wsdlUrl ="http://localhost:8989/axis/HelloWorld.jws?wsdl";30.31. String nameSpaceUri ="http://localhost:8989/axis/HelloWorld.jws";32.33. String serviceName = "HelloWorldService";34.35. String portName = "HelloWorld";36.37.38.39. ServiceFactory serviceFactory = ServiceFactory.newInstance();40.41. Service afService =serviceFactory.createService(new URL(wsdlUrl),new QName(nameSpaceUri, serviceName));42.43. HelloWorldInterface proxy = (HelloWorldInterface)afService.getPort(new QName(nameSpaceUri, portName),HelloWorldInterfa ce.class);44.45. System.out.println("return value is "+proxy.getName("john") ) ;46.47.48.49. }50.51.52.53.}54.四、使用axis2开发webservice(这里首先感谢李宁老师)使用axis2 需要先下载axis2-1.4.1-bin.zipaxis2-1.4.1-war.zip/axis2/同理,也需要将axis2复制到webapp目录中在axis2中部署webservice有两种方法,第一种是pojo方式,这种方式比较简单,但是有一些限制,例如部署的类不能加上包名第二种方式是利用xml发布webservice,这种方法比较灵活,不需要限制类的声明下面分别说明使用方法:1.pojo方式:在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。

webservice 接口写法 java

webservice 接口写法 java

深入了解Java中的WebService接口编写一、引言在当今的信息化社会,数据交换已经成为我们生活和工作中不可或缺的一部分。

而Web服务(WebService)作为一种基于网络的分布式计算模型,为跨平台的数据交换提供了可能。

其中,Java作为应用最广泛的编程语言之一,其对WebService的支持也十分强大。

本文将详细阐述如何在Java中编写WebService接口。

二、WebService基础WebService是一种允许不同应用程序通过HTTP进行交互的技术,使得应用程序可以使用标准的XML消息进行通信,实现数据共享和服务集成。

简单来说,WebService就是一种让两个应用程序通过互联网进行通信的方式。

三、Java中的WebServiceJava对WebService的支持主要体现在JAX-WS(Java API for XML Web Services)框架上。

JAX-WS提供了一种简单易用的API来创建和访问WebService。

下面我们就来看看如何在Java中编写一个简单的WebService接口。

四、编写WebService接口首先,我们需要创建一个Java接口,这个接口将被发布为WebService。

例如:```javaimport javax.jws.WebMethod;import javax.jws.WebService;@WebServicepublic interface HelloWorld {@WebMethodpublic String sayHello(String name);}```在这个例子中,`@WebService`注解用于指定该接口是一个WebService,`@WebMethod`注解则用于指定该方法是可以被远程调用的。

然后,我们需要创建一个实现了上述接口的类。

例如:```javaimport javax.jws.WebService;@WebService(endpointInterface = .example.HelloWorld")public class HelloWorldImpl implements HelloWorld {@Overridepublic String sayHello(String name) {return "Hello, " + name;}}```在这里,`@WebService`注解中的`endpointInterface`属性指定了实现的接口。

java发布并调用webservice接口简单示例

java发布并调用webservice接口简单示例

java发布并调⽤webservice接⼝简单⽰例如何发布⼀个webservice:1. 创建⼀个web项⽬其中主要包括webservice接⼝,实现类,发布类《接⼝》package com.yonyou.webservice;import javax.jws.WebMethod;@javax.jws.WebServicepublic interface WebService {@WebMethodString sayhello(String name);}这是WebService接⼝,其中定义了⼀个sayHello(String name)的⽅法记住⼀定要在类上加上@WebService注解@WebMethod注解声明了这个⽅法是要发布出去的⽅法《接⼝实现类》package com.yonyou.webservice;@javax.jws.WebServicepublic class WebServiceImpl implements WebService {@Overridepublic String sayhello(String name) {System.out.println("WebService begin...... "+name);return name;}}《发布类》直接执⾏main⽅法,注意需要调⽤接⼝时此main⽅法要启动package com.yonyou.webservice;import javax.xml.ws.Endpoint;public class WebServicePublish {public static void main(String[] args) {//访问地址 http://localhost:8080/WS_Server/Webservice?wsdlString address = "http://localhost:8080/WS_Server/Webservice";Endpoint.publish(address, new WebServiceImpl());System.out.println("Webservice已发布");}}浏览器访问http://localhost:8080/WS_Server/Webservice?wsdl地址显⽰如下,webservice接⼝发布成功如何调⽤发布成功的webservice:(1)可以使⽤soapUI⼯具调⽤测试(2)客户端调⽤创建⼀个客户端项⽬Win+R组合键进⼊命令⾏在cmd中输⼊wsimport -s 我们这个项⽬的src路径 -keep 我们发布的webservice地址例如:wsimport -s F:\GX\workspace\webserviceClient\src -keep http://localhost:8080/WS_Server/Webservice?wsdl编译完成会在客户端项⽬中⽣成许多类⾃⼰写的⼀个客户端的测试类WsClientpackage com.yonyou.webservice;public class WsClient {public static void main(String[] args) {WebServiceImplService factory = new WebServiceImplService();WebServiceImpl wsimpl = factory.getWebServiceImplPort();String result = wsimpl.sayhello("Webservice调⽤成功");System.out.println("测试webservice结果为: "+result);}}执⾏测试类,看是否调⽤webservice接⼝成功。

webservice java调用示例

webservice java调用示例

Web服务是一种基于网络的软件系统,它使用标准化的XML消息格式来交换数据。

这篇文章将介绍如何在Java中调用Web服务的示例。

1. 准备工作在开始调用Web服务之前,我们需要确保已经安装了Java开发环境,并且已经了解了Web服务的基本概念和相关知识。

2. 创建Java项目我们需要创建一个新的Java项目。

可以使用Eclipse、IntelliJ IDEA或者其他Java集成开发环境来创建项目。

在项目中,我们需要创建一个新的Java类来进行Web服务的调用。

3. 导入Web服务接口在Java项目中,我们需要导入Web服务的接口。

这可以通过WSDL (Web服务描述语言)文件来实现。

WSDL文件定义了Web服务的接口和可用操作。

可以使用wsimport工具来生成Java代码,该工具在Java的安装目录下的bin目录中可以找到。

4. 调用Web服务一旦导入了Web服务的接口,我们就可以使用Java代码来调用Web 服务了。

我们可以通过创建代理对象来调用Web服务的操作。

以下是一个简单的示例代码:```javaimport.example.webservice.MyWebService;import.example.webservice.MyWebServiceService;public class WebServiceClient {public static void main(String[] args) {MyWebServiceService service = new MyWebServiceService();MyWebService port = service.getMyWebServicePort();// 调用Web服务的操作String result = port.sayHello("World");System.out.println(result);}}```在这个示例中,我们首先创建了Web服务的代理对象,然后调用了Web服务的sayHello操作,并打印出了返回的结果。

java实现简单的webservice方式

java实现简单的webservice方式

java实现简单的webservice⽅式本⽂实例为⼤家分享了java实现webservice⽅式的具体代码,供⼤家参考,具体内容如下经过测试 jdk1.6.10以下会出现bug 建议使⽤10以上版本1、定义接⼝package org.enson.chan;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;@WebService@SOAPBinding(style=SOAPBinding.Style.RPC)public interface IMyService {public int add(int a , int b);public int max(int a , int b);}2、实现接⼝package org.enson.chan;import javax.jws.WebService;@WebService(endpointInterface="org.enson.chan.IMyService")public class MyServiceImpl implements IMyService {public int add(int a, int b) {System.out.println(a+"+"+b+"="+(a+b));return a+b;}public int max(int a, int b) {System.out.println("a与b⽐较⼤⼩,取⼤值"+((a&gt;b)?a:b));return (a&gt;b)?a:b;}}3、定义服务package org.enson.chan;import javax.xml.ws.Endpoint;public class MyServer {public static void main(String[] args) {String address = "http://localhost:8090/ns";Endpoint.publish(address, new MyServiceImpl());}}4、测试服务package org.enson.chan;import .MalformedURLException;import .URL;import space.QName;import javax.xml.ws.Service;public class TestClient {public static void main(String[] args) {try {URL url = new URL("http://localhost:8090/ns?wsdl");QName sname = new QName("/", "MyServiceImplService");//创建服务Service service = Service.create(url,sname);//实现接⼝IMyService ms = service.getPort(IMyService.class);System.out.println(ms.add(12,33));//以上服务有问题,依然依赖于IMyServie接⼝} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}5、TestSoapimport java.io.IOException;import java.io.StringReader;import java.io.StringWriter;import .URL;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller;import space.QName;import javax.xml.soap.MessageFactory;import javax.xml.soap.SOAPBody;import javax.xml.soap.SOAPBodyElement;import javax.xml.soap.SOAPEnvelope;import javax.xml.soap.SOAPException;import javax.xml.soap.SOAPHeader;import javax.xml.soap.SOAPMessage;import javax.xml.soap.SOAPPart;import javax.xml.transform.Source;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.TransformerFactoryConfigurationError; import javax.xml.transform.dom.DOMResult;import javax.xml.transform.stream.StreamSource;import javax.xml.ws.Dispatch;import javax.xml.ws.Service;import javax.xml.ws.soap.SOAPFaultException;import javax.xml.xpath.XPath;import javax.xml.xpath.XPathConstants;import javax.xml.xpath.XPathExpressionException;import javax.xml.xpath.XPathFactory;import org.junit.Test;import er;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class TestSoap {private String ns = "/";private String wsdlUrl = "http://localhost:8989/ms?wsdl";@Testpublic void test01() {try {MessageFactory factory = MessageFactory.newInstance();SOAPMessage message = factory.createMessage();SOAPPart part = message.getSOAPPart();SOAPEnvelope envelope = part.getEnvelope();SOAPBody body = envelope.getBody();QName qname = new QName("/webservice","add","ns");//&lt;ns:add xmlns="/webservice"/&gt;//body.addBodyElement(qname).setValue("&lt;a&gt;1&lt;/a&gt;&lt;b&gt;2&lt;/b&gt;");SOAPBodyElement ele = body.addBodyElement(qname);ele.addChildElement("a").setValue("22");ele.addChildElement("b").setValue("33");message.writeTo(System.out);} catch (SOAPException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}@Testpublic void test02() {try {URL url = new URL(wsdlUrl);QName sname = new QName(ns,"MyServiceImplService");Service service = Service.create(url,sname);Dispatch&lt;SOAPMessage&gt; dispatch = service.createDispatch(new QName(ns,"MyServiceImplPort"), SOAPMessage.class, Service.Mode.MESSAGE);SOAPMessage msg = MessageFactory.newInstance().createMessage();SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();SOAPBody body = envelope.getBody();QName ename = new QName(ns,"add","nn");//&lt;nn:add xmlns="xx"/&gt;SOAPBodyElement ele = body.addBodyElement(ename);ele.addChildElement("a").setValue("22");ele.addChildElement("b").setValue("33");msg.writeTo(System.out);System.out.println("\n invoking.....");SOAPMessage response = dispatch.invoke(msg);response.writeTo(System.out);System.out.println();Document doc = response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument();String str = doc.getElementsByTagName("addResult").item(0).getTextContent();System.out.println(str);} catch (SOAPException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}@Testpublic void test03() {try {URL url = new URL(wsdlUrl);QName sname = new QName(ns,"MyServiceImplService");Service service = Service.create(url,sname);Dispatch&lt;Source&gt; dispatch = service.createDispatch(new QName(ns,"MyServiceImplPort"),Source.class, Service.Mode.PAYLOAD);User user = new User(3,"zs","张三","11111");JAXBContext ctx = JAXBContext.newInstance(User.class);Marshaller mar = ctx.createMarshaller();mar.setProperty(Marshaller.JAXB_FRAGMENT, true);StringWriter writer= new StringWriter();mar.marshal(user, writer);String payload = "&lt;nn:addUser xmlns:nn=\""+ns+"\"&gt;"+writer.toString()+"&lt;/nn:addUser&gt;";System.out.println(payload);StreamSource rs = new StreamSource(new StringReader(payload));Source response = (Source)dispatch.invoke(rs);Transformer tran = TransformerFactory.newInstance().newTransformer();DOMResult result = new DOMResult();tran.transform(response, result);XPath xpath = XPathFactory.newInstance().newXPath();NodeList nl = (NodeList)xpath.evaluate("//user", result.getNode(),XPathConstants.NODESET);User ru = (User)ctx.createUnmarshaller().unmarshal(nl.item(0));System.out.println(ru.getNickname());} catch (IOException e) {e.printStackTrace();} catch (JAXBException e) {e.printStackTrace();} catch (TransformerConfigurationException e) {e.printStackTrace();} catch (TransformerFactoryConfigurationError e) {e.printStackTrace();} catch (TransformerException e) {e.printStackTrace();} catch (XPathExpressionException e) {e.printStackTrace();}}@Testpublic void test04() {try {URL url = new URL(wsdlUrl);QName sname = new QName(ns,"MyServiceImplService");Service service = Service.create(url,sname);Dispatch&lt;SOAPMessage&gt; dispatch = service.createDispatch(new QName(ns,"MyServiceImplPort"), SOAPMessage.class, Service.Mode.MESSAGE);SOAPMessage msg = MessageFactory.newInstance().createMessage();SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();SOAPBody body = envelope.getBody();SOAPHeader header = envelope.getHeader();if(header==null) header = envelope.addHeader();QName hname = new QName(ns,"authInfo","nn");header.addHeaderElement(hname).setValue("aabbccdd");QName ename = new QName(ns,"list","nn");//&lt;nn:add xmlns="xx"/&gt;body.addBodyElement(ename);msg.writeTo(System.out);System.out.println("\n invoking.....");SOAPMessage response = dispatch.invoke(msg);response.writeTo(System.out);System.out.println();Document doc = response.getSOAPBody().extractContentAsDocument();NodeList nl = doc.getElementsByTagName("user");JAXBContext ctx = JAXBContext.newInstance(User.class);for(int i=0;i&lt;nl.getLength();i++) {Node n = nl.item(i);User u = (User)ctx.createUnmarshaller().unmarshal(n);System.out.println(u.getNickname());}} catch (SOAPException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (JAXBException e) {e.printStackTrace();}}@Testpublic void test05() {try {URL url = new URL(wsdlUrl);QName sname = new QName(ns,"MyServiceImplService");Service service = Service.create(url,sname);Dispatch&lt;SOAPMessage&gt; dispatch = service.createDispatch(new QName(ns,"MyServiceImplPort"), SOAPMessage.class, Service.Mode.MESSAGE);SOAPMessage msg = MessageFactory.newInstance().createMessage();SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();SOAPBody body = envelope.getBody();QName ename = new QName(ns,"login","nn");//&lt;nn:add xmlns="xx"/&gt;SOAPBodyElement ele = body.addBodyElement(ename);ele.addChildElement("username").setValue("ss");ele.addChildElement("password").setValue("dd");msg.writeTo(System.out);System.out.println("\n invoking.....");SOAPMessage response = dispatch.invoke(msg);response.writeTo(System.out);System.out.println();} catch(SOAPFaultException e){System.out.println(e.getMessage());} catch (SOAPException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

Java调用CXFWebService接口的两种方式实例

Java调用CXFWebService接口的两种方式实例

Java调⽤CXFWebService接⼝的两种⽅式实例1.静态调⽤// 创建WebService客户端代理⼯⼚JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();// 判断是否抛出异常factory.getOutInterceptors().add(new LoggingInInterceptor());// 注册webservice接⼝factory.setServiceClass(DeductionService.class);// 配置webservice地址factory.setAddress("http://localhost:7002/card/services/HelloWorld?wsdl");// 获得接⼝对象CxfService service = (CxfService) factory.create();// 调⽤接⼝⽅法String result = service.sayHello("aaaaaaaaaa");System.out.println("调⽤结果:" + result);// 关闭接⼝连接System.exit(0);2.动态调⽤:JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:7002/card/services/HelloWorld?wsdl");// url为调⽤webService的wsdl地址QName name = new QName("/", "sayHello");// namespace是命名空间,methodName是⽅法名String xmlStr = "aaaaaaaa";// paramvalue为参数值Object[] objects;try {objects = client.invoke(name, xmlStr);System.out.println(objects[0].toString());} catch (Exception e) {e.printStackTrace();}区别:静态调⽤需要依赖service类,因为客户端调⽤cxf webservice接⼝的过程中需要服务器端提供service,很不⽅便,如果同⼀个项⽬中则没有区别。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java WebService 接口实现方式
什么是 WebService
WebService 是一种基于 Web 的服务通信协议,通过使用标准的 HTTP 协议传输数据,使得不同平台、不同语言的应用程序能够进行互操作。

它使用 XML 格式来描
述请求和响应的数据,并使用 SOAP(简单对象访问协议)来封装和传输这些数据。

WebService 可以提供各种功能,例如数据查询、数据传输、远程过程调用等。


是一种跨平台、跨语言的解决方案,能够实现不同系统之间的集成和通信。

Java WebService 实现方式
Java 提供了多种方式来实现 WebService 接口,下面介绍两种常用的实现方式。

JAX-WS
JAX-WS(Java API for XML Web Services)是 Java EE 的一部分,用于开发和部署 WebService。

它提供了一种简单的方式来创建和发布 WebService 接口。

创建接口
首先,我们需要定义一个接口,用于描述我们要提供的服务。

接口中的每个方法都将成为可远程调用的操作。

import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface MyWebService {
@WebMethod
String sayHello(String name);
}
在上面的例子中,我们定义了一个名为MyWebService的接口,其中有一个名为sayHello的方法,该方法接受一个字符串参数并返回一个字符串结果。

实现接口
接下来,我们需要实现上述接口。

这里我们可以使用一个普通的 Java 类来实现接口中的方法。

@WebService(endpointInterface = "com.example.MyWebService")
public class MyWebServiceImpl implements MyWebService {
@Override
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
在上面的例子中,我们创建了一个名为MyWebServiceImpl的类,并实现了MyWebService接口中的sayHello方法。

发布服务
最后,我们需要将实现的服务发布到 Web 服务器上,以便客户端可以访问和调用。

import javax.xml.ws.Endpoint;
public class WebServicePublisher {
public static void main(String[] args) {
String url = "";
Endpoint.publish(url, new MyWebServiceImpl());
System.out.println("WebService is published at: " + url);
}
}
在上面的例子中,我们使用Endpoint.publish()方法将服务发布到指定的 URL 上,并输出发布的地址。

客户端调用
使用 JAX-WS 创建的 WebService 可以通过生成客户端代码来调用。

客户端代码可以使用wsimport工具从服务的 WSDL(Web Services Description Language)文
件中生成。

wsimport -s src
在上面的例子中,我们使用wsimport命令生成客户端代码,并将生成的代码保存
到src目录中。

然后,我们可以在客户端代码中调用服务的方法。

import com.example.MyWebService;
import com.example.MyWebServiceService;
public class WebServiceClient {
public static void main(String[] args) {
MyWebServiceService service = new MyWebServiceService();
MyWebService port = service.getMyWebServicePort();
String result = port.sayHello("John");
System.out.println(result);
}
}
在上面的例子中,我们创建了一个名为WebServiceClient的类,并调用了服务的sayHello方法。

Apache CXF
Apache CXF 是一个开源的 WebService 框架,它提供了丰富的功能和灵活的配置选项。

创建接口
首先,我们需要创建一个接口来描述要提供的服务。

public interface MyWebService {
String sayHello(String name);
}
实现接口
接下来,我们需要实现上述接口。

public class MyWebServiceImpl implements MyWebService {
@Override
public String sayHello(String name) {
return "Hello, " + name + "!";
}
}
发布服务
然后,我们需要将实现的服务发布到 Web 服务器上。

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class WebServicePublisher {
public static void main(String[] args) {
String address = "";
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setAddress(address);
factory.setServiceClass(MyWebService.class);
factory.setServiceBean(new MyWebServiceImpl());
factory.create();
System.out.println("WebService is published at: " + address);
}
}
在上面的例子中,我们使用JaxWsServerFactoryBean类来创建并发布服务,并输出发布的地址。

客户端调用
使用 Apache CXF 创建的 WebService 可以通过生成客户端代码来调用。

客户端代码可以使用wsdl2java工具从服务的 WSDL 文件中生成。

wsdl2java -d src -p com.example
在上面的例子中,我们使用wsdl2java命令生成客户端代码,并将生成的代码保存到src目录中。

然后,我们可以在客户端代码中调用服务的方法。

import com.example.MyWebService;
import com.example.MyWebServiceService;
public class WebServiceClient {
public static void main(String[] args) {
MyWebServiceService service = new MyWebServiceService();
MyWebService port = service.getMyWebServicePort();
String result = port.sayHello("John");
System.out.println(result);
}
}
在上面的例子中,我们创建了一个名为WebServiceClient的类,并调用了服务的sayHello方法。

总结
本文介绍了 Java WebService 的两种常用实现方式:JAX-WS 和 Apache CXF。

通过 JAX-WS,我们可以使用注解和简单的配置来创建和发布服务;而使用 Apache CXF,我们可以使用更灵活的配置选项来创建和发布服务。

无论选择哪种方式,Java WebService 都是一种强大的跨平台、跨语言的解决方案,能够实现不同系统之间的集成和通信。

相关文档
最新文档