Java RPC 原生实现之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。
webservice函数用法

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 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 接口实现方式

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调用方式详解

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几种调用方式一、介绍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简介二、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⽅式本⽂实例为⼤家分享了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();}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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开发者,掌握此项技术是非常有必要的。