本文实例为大家分享了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();
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java
# webservice
# java调用WebService服务的四种方法总结
# java WSDL接口webService实现方式
# java如何实现post请求webservice服务端
# 大家分享
# 具体内容
# 大家多多
# 依赖于
# getPort
# ms
# MyServiceImplService
# service
# create
# TODO
# Auto
# generated
# IMyServie
# catch
# sname
# publish
# net
# MalformedURLException
# localhost
# ns
相关文章:
简历在线制作网站免费,免费下载个人简历的网站是哪些?
淘宝制作网站有哪些,淘宝网官网主页?
如何访问已购建站主机并解决登录问题?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
网站按钮制作软件,如何实现网页中按钮的自动点击?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
c# 服务器GC和工作站GC的区别和设置
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
定制建站策划方案_专业建站与网站建设方案一站式指南
建站之星如何快速更换网站模板?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
中山网站推广排名,中山信息港登录入口?
建站之星价格显示格式升级,你的预算足够吗?
济南网站制作的价格,历城一职专官方网站?
已有域名和空间如何快速搭建网站?
建站主机选择指南:服务器配置与SEO优化实战技巧
临沂网站制作公司有哪些,临沂第四中学官网?
如何用5美元大硬盘VPS安全高效搭建个人网站?
网站制作公司排行榜,抖音怎样做个人官方网站
如何用好域名打造高点击率的自主建站?
网站制作新手教程,新手建设一个网站需要注意些什么?
安徽网站建设与外贸建站服务专业定制方案
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
北京制作网站的公司,北京铁路集团官方网站?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
建站OpenVZ教程与优化策略:配置指南与性能提升
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
建站之星云端配置指南:模板选择与SEO优化一键生成
高端建站三要素:定制模板、企业官网与响应式设计优化
公司网站设计制作厂家,怎么创建自己的一个网站?
黑客入侵网站服务器的常见手法有哪些?
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何快速建站并高效导出源代码?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
如何快速上传自定义模板至建站之星?
如何在自有机房高效搭建专业网站?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
网站制作网站,深圳做网站哪家比较好?
建站主机默认首页配置指南:核心功能与访问路径优化
如何快速查询网址的建站时间与历史轨迹?
音乐网站服务器如何优化API响应速度?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何快速生成凡客建站的专业级图册?
如何快速搭建虚拟主机网站?新手必看指南
网站制作软件免费下载安装,有哪些免费下载的软件网站?
学校为何禁止电信移动建设网站?
高端网站建设与定制开发一站式解决方案 中企动力
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
相册网站制作软件,图片上的网址怎么复制?
*请认真填写需求信息,我们会在24小时内与您取得联系。