Java RPC 原生实现之WebService详解
- 格式:docx
- 大小:213.61 KB
- 文档页数:6
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。
webservice函数是一种常用的网络服务接口,用于实现不同系统或评台之间的数据交换和通信。
它可以帮助开发人员轻松地通过网络调用远程的服务程序,并在不同的评台上进行数据交换和通信。
本文将对webservice函数的用法进行详细介绍,希望能够对相关开发人员有所帮助。
一、webservice函数的定义webservice函数是一种基于网络的服务接口,它使用标准的HTTP协议进行数据传输,通常通过SOAP(Simple Object Access Protocol)来进行数据的封装和传输。
开发人员可以通过webservice函数轻松地将自己的程序封装成一个web服务,并通过网络对外提供服务。
二、webservice函数的语法在大多数的编程语言中,webservice函数的语法都比较相似。
例如在Java语言中,可以通过JAX-WS或JAX-RPC等方式来实现webservice函数。
在.NET评台中,可以使用来实现webservice函数。
一般来说,webservice函数的语法包括以下几个方面:1. 定义webservice函数的接口2. 实现webservice函数的具体功能3. 部署webservice函数到服务器上三、webservice函数的用法使用webservice函数可以让开发人员轻松地实现不同系统之间的数据交换和通信,下面将介绍webservice函数的常用用法。
1. 定义webservice函数的接口在实际开发中,首先需要定义webservice函数的接口,即需要确定需要提供哪些服务。
开发人员可以根据实际需求,定义出webservice函数的各种接口,包括输入参数和返回值等。
2. 实现webservice函数的具体功能一旦确定了webservice函数的接口,接下来就需要实现具体的功能。
开发人员可以根据接口的定义,编写相应的代码来实现webservice函数的功能。
在实现的过程中,需要考虑数据的安全性和可靠性等问题。
Java WebService是一种基于Java语言开发的Web服务技术,它可以实现跨评台、跨语言的应用程序通信。
通过使用Java WebService,我们可以在不同的系统之间传递数据,实现各种功能和服务的集成。
二、Java WebService的特点1. 与评台和语言无关Java WebService可以和其他语言和评台进行互操作,无论是.NET评台还是其他语言,都可以通过Web服务进行通信和数据传输。
2. 基于标准协议Java WebService基于标准的网络协议来实现通信,如SOAP、WSDL和UDDI等,这些协议保证了Web服务的稳定性和可靠性。
3. 开放性和扩展性Java WebService是开放的,可以轻松扩展其功能和实现新的应用场景,使得其具有很高的灵活性。
4. 安全性Java WebService提供了一系列安全机制,可以对数据进行加密和验证,保证通信的安全性。
1. 创建Java WebService我们需要创建一个新的Java项目,然后在项目中创建一个Web服务,可以使用Eclipse等集成开发环境来实现。
在创建Web服务时,我们可以指定服务的名称、命名空间和方法等信息,这些信息将在WebService的描述文件中提供。
2. 实现Web服务的方法在创建完Web服务之后,我们需要实现具体的方法,这些方法将对外提供服务。
在方法上加上WebMethod注解,表示这个方法是对外公开的,客户端可以通过调用这些方法来访问Web服务。
3. 发布Web服务当我们完成了Web服务的构建和方法实现之后,就可以将Web服务发布到Web容器中,比如Tomcat或者其他JavaEE容器。
发布Web服务时,需要生成对应的WSDL文件,这个文件包含了Web服务的接口信息和方法调用规范。
4. 调用Web服务客户端可以使用各种技术和工具来调用Web服务,比如SOAP协议、HTTP协议等。
客户端可以通过WSDL文件来了解Web服务的接口和方法,然后根据这些信息来编写代码调用Web服务。
Java WebService 接口实现方式什么是 WebServiceWebService 是一种基于 Web 的服务通信协议,通过使用标准的 HTTP 协议传输数据,使得不同平台、不同语言的应用程序能够进行互操作。
它使用 XML 格式来描述请求和响应的数据,并使用 SOAP(简单对象访问协议)来封装和传输这些数据。
WebService 可以提供各种功能,例如数据查询、数据传输、远程过程调用等。
它是一种跨平台、跨语言的解决方案,能够实现不同系统之间的集成和通信。
Java WebService 实现方式Java 提供了多种方式来实现 WebService 接口,下面介绍两种常用的实现方式。
JAX-WSJAX-WS(Java API for XML Web Services)是 Java EE 的一部分,用于开发和部署 WebService。
它提供了一种简单的方式来创建和发布 WebService 接口。
创建接口首先,我们需要定义一个接口,用于描述我们要提供的服务。
接口中的每个方法都将成为可远程调用的操作。
import javax.jws.WebMethod;import javax.jws.WebService;@WebServicepublic interface MyWebService {@WebMethodString sayHello(String name);}在上面的例子中,我们定义了一个名为MyWebService的接口,其中有一个名为sayHello的方法,该方法接受一个字符串参数并返回一个字符串结果。
实现接口接下来,我们需要实现上述接口。
这里我们可以使用一个普通的 Java 类来实现接口中的方法。
@WebService(endpointInterface = "com.example.MyWebService")public class MyWebServiceImpl implements MyWebService {@Overridepublic String sayHello(String name) {return "Hello, " + name + "!";}}在上面的例子中,我们创建了一个名为MyWebServiceImpl的类,并实现了MyWebService接口中的sayHello方法。
Java - Webservice调用方式详解调用webservice,可以首先根据wsdl文件生成客户端,或者直接根据地址调用,下面讨论直接调用地址的两种不同方式:axis和Soap,soap方式主要是用在websphere下axis方式调用:import java.util.Date;import java.text.DateFormat;import org.apache.axis.client.Call;import org.apache.axis.client.Service;import space.QName;import ng.Integer;import javax.xml.rpc.ParameterMode;public class caClient {public static void main(String[] args) {try {String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";Service service = new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(endpoint);call.setOperationName("addUser");call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE, javax.xml.rpc.ParameterMode.IN);call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);call.setUseSOAPAction(true);call.setSOAPActionURI("/Rpc");//Integer k = (Integer) call.invoke(new Object[] { i, j });//System.out.println("result is " + k.toString() + ".");String temp = "测试人员";String result = (String)call.invoke(new Object[]{temp});System.out.println("result is "+result);}catch (Exception e) {System.err.println(e.toString());}}}soap方式调用import org.apache.soap.util.xml.*;import org.apache.soap.*;import org.apache.soap.rpc.*;import java.io.*;import .*;import java.util.Vector;public class caService{public static String getService(String user) {URL url = null;try {url=new URL("http://192.168.0.100:8080/ca3/services/caSynrochnized"); } catch (MalformedURLException mue) {return mue.getMessage();}// This is the main SOAP objectCall soapCall = new Call();// Use SOAP encodingsoapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);// This is the remote object we're asking for the pricesoapCall.setTargetObjectURI("urn:xmethods-caSynrochnized");// This is the name of the method on the above objectsoapCall.setMethodName("getUser");// We need to send the ISBN number as an input parameter to the method Vector soapParams = new Vector();// name, type, value, encoding styleParameter isbnParam = new Parameter("userName", String.class, user, null); soapParams.addElement(isbnParam);soapCall.setParams(soapParams);try {// Invoke the remote method on the objectResponse soapResponse = soapCall.invoke(url,"");// Check to see if there is an error, return "N/A"if (soapResponse.generatedFault()) {Fault fault = soapResponse.getFault();String f = fault.getFaultString();return f;} else {// read resultParameter soapResult = soapResponse.getReturnValue ();// get a string from the resultreturn soapResult.getValue().toString();}} catch (SOAPException se) {return se.getMessage();}}}返回一维数组时Parameter soapResult = soapResponse.getReturnValue(); String[] temp = (String[])soapResult.getValue();调用生成的webserviceprivate String HelloWorld(String uri, String u) {try {SOAPMappingRegistry smr = new SOAPMappingRegistry(); StringDeserializer sd = new StringDeserializer(); ArraySerializer arraySer = new ArraySerializer(); BeanSerializer beanSer = new BeanSerializer();smr.mapTypes(Constants.NS_URI_SOAP_ENC, new QName( "/", "HelloWorldResult"), String.class, null, sd);smr.mapTypes(Constants.NS_URI_SOAP_ENC, new QName( "/", "temp"), String.class,beanSer, beanSer);URL url = new URL(uri);Call call = new Call();call.setSOAPMappingRegistry(smr);call.setTargetObjectURI("urn:xmethods-Service1");call.setMethodName("HelloWorld");call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);Vector soapParams = new Vector();soapParams.addElement(new Parameter("temp", String.class, u, null)); call.setParams(soapParams);Response soapResponse = call.invoke(url,"/HelloWorld"); if (soapResponse.generatedFault()) {Fault fault = soapResponse.getFault();System.out.println(fault);} else {Parameter soapResult = soapResponse.getReturnValue();Object obj = soapResult.getValue();System.out.println("===" + obj);}} catch (Exception e) {e.printStackTrace();}return null;}。
Java WebService几种调用方式一、介绍Java WebService是一种基于SOAP协议的远程方法调用技术,可以实现跨评台、跨语言的通信。
在实际应用中,我们可以使用多种方式来调用Web服务,本文将介绍Java WebService几种常见的调用方式。
二、基于JAX-WS的调用方式JAX-WS(Java API for XML Web Services)是一种用于创建和调用Web服务的Java标准。
通过使用JAX-WS,我们可以方便地创建客户端和服务端,并进行方法调用。
在客户端,我们可以通过使用wsimport命令生成客户端的Java代码,并使用Java代码来调用Web服务的方法。
在服务端,我们可以通过使用@WebService注解来发布服务,并使用Java代码实现方法的具体逻辑。
三、基于Axis的调用方式Apache Axis是一个流行的开源Java Web服务框架,它支持SOAP协议,可以用于创建和调用Web服务。
在基于Axis的调用方式中,我们可以使用WSDL2Java工具生成客户端的Java代码,然后使用Java代码来调用Web服务的方法。
在服务端,我们可以使用Java代码实现方法的逻辑,并使用Axis框架来发布服务。
四、基于CXF的调用方式Apache CXF是另一个流行的开源Java Web服务框架,它也支持SOAP协议,并提供了丰富的特性和扩展性。
在基于CXF的调用方式中,我们可以使用wsdl2java工具生成客户端的Java代码,然后使用Java代码来调用Web服务的方法。
在服务端,我们可以使用Java代码实现方法的逻辑,并使用CXF框架来发布服务。
五、总结在本文中,我们介绍了Java WebService几种常见的调用方式,包括基于JAX-WS、Axis和CXF。
通过这些调用方式,我们可以方便地创建和调用Web服务,实现跨评台、跨语言的通信。
个人观点和理解作为Java开发人员,我认为Java WebService是一种非常重要的技术,它可以帮助我们实现分布式系统之间的通信,为企业级应用的开发提供了很大的便利。
java webservice调用方式及解析摘要:一、Java WebService简介二、Java WebService调用方式1.基于HTTP的调用2.基于SOAP的调用3.基于REST的调用三、Java WebService解析1.WSDL文件解析2.SOAP消息解析3.XML消息解析正文:一、Java WebService简介Java WebService是一种基于Java技术的Web服务,它允许不同平台、不同编程语言的应用程序相互通信。
Java WebService遵循JAX-WS(Java API for XML Web Services)规范,利用XML、SOAP、WSDL等技术来实现服务的发布、发现和调用。
二、Java WebService调用方式1.基于HTTP的调用基于HTTP的调用是指使用HTTP协议传输XML数据来进行WebService调用。
这种方式简单、易实现,但不够灵活。
优点是兼容性较好,可以跨平台、跨语言。
2.基于SOAP的调用基于SOAP(Simple Object Access Protocol)的调用是一种更复杂的WebService调用方式。
它使用XML文档来表示消息,并通过HTTP传输。
SOAP消息包含三个部分:Header、Body和Footer。
Header用于传递消息的元数据,如消息版本、编码方式等;Body是消息的主体,包含具体的方法调用和参数;Footer用于传递消息的额外信息。
3.基于REST的调用基于REST(Representational State Transfer)的调用是一种基于HTTP 协议的调用方式。
它将WebService暴露为一系列资源(Resource),并通过HTTP动词(GET、POST、PUT、DELETE)进行操作。
RESTful WebService 具有较好的可读性和实用性,易于理解和开发。
三、Java WebService解析1.WSDL文件解析WSDL(Web Services Description Language)文件是描述WebService接口和消息格式的一种XML文档。
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>b)?a:b));return (a>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");//<ns:add xmlns="/webservice"/>//body.addBodyElement(qname).setValue("<a>1</a><b>2</b>");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<SOAPMessage> 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");//<nn:add xmlns="xx"/>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<Source> 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 = "<nn:addUser xmlns:nn=\""+ns+"\">"+writer.toString()+"</nn:addUser>";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<SOAPMessage> 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");//<nn:add xmlns="xx"/>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<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<SOAPMessage> 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");//<nn:add xmlns="xx"/>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 webservice几种调用方式摘要:1.引言2.Java WebService 的定义3.Java WebService 的调用方式3.1 SOAP 协议3.2 RESTful 风格3.3 RSS 和ATOM4.结论正文:【引言】Java WebService 是一种基于Java 语言编写的网络服务,它允许开发人员创建可与外部系统交互的Web 应用程序。
Java WebService 可以被各种调用方式,本文将介绍几种常见的调用方式。
【Java WebService 的定义】Java WebService 是一组基于Java 语言编写的接口和实现,它通过Web 进行通信。
Java WebService 可以被部署在各种支持Java 的服务器上,如Tomcat、GlassFish 等。
客户端可以通过各种协议调用Java WebService,实现数据交互和业务逻辑处理。
【Java WebService 的调用方式】【3.1 SOAP 协议】SOAP(Simple Object Access Protocol)是一种基于XML 的轻量级协议,用于在分布式环境中交换信息。
客户端可以使用SOAP 协议调用Java WebService,这种调用方式需要客户端和服务器之间建立XML 数据传输的通道。
SOAP 协议支持RPC(远程过程调用)和Document 风格的消息传递,可以满足不同需求。
【3.2 RESTful 风格】REST(Representational State Transfer)是一种基于HTTP 协议的Web 服务设计风格,它采用资源(Resource)和HTTP 方法(如GET、POST、PUT、DELETE)进行操作。
客户端可以使用RESTful 风格调用Java WebService,这种调用方式简单、易于实现和维护。
近年来,随着移动互联网和物联网的发展,RESTful 风格得到了广泛应用。
java 处理 webservice详细方法Java是一种流行的编程语言,可以用于处理Web服务(WebService)。
在这篇文章中,我们将详细介绍Java处理WebService的方法。
1、使用Java API for XML Web Services (JAX-WS)来处理WebServiceJAX-WS是Java EE 5规范的一部分,它提供了一组API和工具,用于开发和部署SOAP(Simple Object Access Protocol)和RESTful (Representational State Transfer)风格的Web服务。
使用JAX-WS,开发人员可以轻松地创建、发布和使用Web服务。
2、使用Apache Axis2来处理WebServiceApache Axis2是一个流行的开源SOAP引擎,它提供了一组API 和工具,用于创建、发布和使用Web服务。
它支持各种Web服务协议和传输协议,包括HTTP(S)、SOAP、XML-RPC、JSON、JMS和SMTP。
3、使用Spring Web Services来处理WebServiceSpring Web Services是一个基于Spring Framework的库,它提供了一组API和工具,用于创建和使用SOAP Web服务。
它支持各种Web服务标准和技术,包括SOAP、WSDL(Web Services Description Language)、XML Schema和XSLT。
4、使用Java API for RESTful Web Services (JAX-RS)来处理WebServiceJAX-RS是Java EE 6规范的一部分,它提供了一组API和工具,用于创建和使用RESTful Web服务。
使用JAX-RS,开发人员可以轻松地创建、发布和使用RESTful Web服务,同时也可以很容易地与其他Java EE技术集成。
Java RPC 原生实现之WebService 一WebService释义
WebService是一种跨语言和跨操作系统的系统间交互标准。
WebService采用SOAP协议封装数据、HTTP协议传输数据、WSDL 描述服务发布的XML格式。
二Java实现
JavaSE6内置支持WebService,可以直接用来实现远程调用,服务端通过@WebService来标记对外暴露的服务实现类,通过调用Endpoint.publish发布到指定的服务地址上。
话不多说,直接上代码更直观。
服务接口:
注意:接口上一定要加@WebService注释,否则会报如下异常,端点接口没有Web服务注释。
服务实现类(document风格):
发布服务有两种SOAPBinding风格,SOAPBinding.style.DOCUMENT 和SOAPBinding.style.RPC,默认的是DOCUMENT。
我们先以默认的风格来实现。
@WebService注解属性释义:
endpointInterface:服务接口, 指定做SEI(Service EndPoint Interface)服务端点接口。
name:指定XML Web Service的名称。
默认情况下,该值是实现XML Web Service的类的名称,wsdl:portType 的名称。
缺省值为Java 类或接口的非限定名称。
serviceName:对外发布的服务名,指定Web Service 的服务名称:wsdl:service。
缺省值为Java 类的简单名称+ Service。
(字符串)。
targetNamespace:指定名称空间,默认使用接口实现类的包名反缀。
portName:wsdl:portName。
缺省值为+Port。
发布服务:
运行程序,看服务发布是否成功
当看到上图信息时,表明服务发布成功。
图中标识的地方,可以结合@WebService释义看看是否符合。
客户端调用:
运行程序,会得到如下结果:
接着,我们看下以RPC风格实现的代码:
服务实现类(RPC风格):
发布服务代码上述已给出,来看下rpc风格发布的服务WSDL和document有何异同
三总结
WebService使用SOAP协议实现跨编程语言和跨操作系统平台,因为封装了底层网络通信细节,因此使用起来较为简单,作为一个Java开发者,掌握此项技术是非常有必要的。