java里面的service_完成java中web service方式的方法介绍

这篇文章主要为大家详细介绍了java实现简单的webservice方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java实现webservice方式的具体代码,供大家参考,具体内容如下

573a5ebeba24979fa52dc31b618386d8.png

经过测试 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、TestSoapimport 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");//

//body.addBodyElement(qname).setValue("12");

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 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");//

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 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 = ""+writer.toString()+"";

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 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");//

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

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 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");//

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();

}

}

}

【相关推荐】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值