时间:2021-05-19
本文实例为大家分享了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 java.net.MalformedURLException;import java.net.URL;import javax.xml.namespace.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("http://chan.enson.org/", "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 block e.printStackTrace(); } }}5、TestSoap
import java.io.IOException;import java.io.StringReader;import java.io.StringWriter;import java.net.URL;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller;import javax.xml.namespace.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 org.soap.service.User;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class TestSoap { private String ns = "http://service.soap.org/"; private String wsdlUrl = "http://localhost:8989/ms?wsdl"; @Test public 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("http://java.zttc.edu.cn/webservice", "add","ns");//<ns:add xmlns="http://java.zttc.edu.cn/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(); } } @Test public 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(); } } @Test public 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(); } } @Test public 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(); } } @Test public 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(); } }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录。1.Axis2Axis是apache下一
此方法完成了简单WebService的简单调用封装,实现了简单Webservice简单调用的统一操作,避免了每增加一个操作都必须增加一个接口方法的囧状!////
Asp.NET中利用jQuery实现Ajax时,在服务器端可以使用aspx,ashx,以及WebService等方式。最近研究了一下WebService方式,j
作为开发者来讲,要想写webservice接口或者调用别人的webservice接口,首先需要了解什么是webservice。简单说,WebService就是一
一、java端首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。webservice的接口代码:复制代码代码如下:p