soapjava实现_Java实现SOAP协议

阅读: 评论:0

soapjava实现_Java实现SOAP协议SOAP是把基于HTTP的WEB技术与XML的灵活性和可扩展性组合在了⼀起。
准备:
本例使⽤版本 apache-tomcat-7.0.54-windows-x64.zip
2. 写⼀个servlet send⽤来发送⼀个SOAP的message并添加⼀个附件
3. 写⼀个servlet receive⽤来做SOAP message的解析并返回⼀个response。
4. 写⼀个简单的html页⾯触发 servlet A。
开发⼯具:
eclipse 版本 eclipse-jee-juno-SR2-win32-x86_64
下载地址:
下载J2EE版本的eclipse⾥⾯包含了SOAP常⽤的⼀些jar,但这个版本的没有jaxm-api.jar,这个需要额外下载
然后倒⼊。
代码结构:
Xml代码
web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"/j2ee/dtds/web-app_2_2.dtd">
DemoSend
cody.soap.demo.DemoSend
DemoReceiver
cody.soap.demo.DemoReceiver
DemoSend
/DemoSend
DemoReceiver
/DemoReceiver
DemoSend.Java
Java代码
package cody.soap.demo;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
URL;
import javax.activation.DataHandler;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
l.soap.AttachmentPart;
l.soap.MessageFactory;
l.soap.SOAPBody;
l.soap.SOAPConnection;
l.soap.SOAPConnectionFactory;
l.soap.SOAPEnvelope;
l.soap.SOAPException;
l.soap.SOAPHeader;
l.soap.SOAPMessage;
l.soap.SOAPPart;
public class DemoSend extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private SOAPConnection connection;
@Override
public void init() throws ServletException {
super.init();
try {
SOAPConnectionFactory connectionFactory = wInstance(); connection = ateConnection();
} catch (UnsupportedOperationException e) {
e.printStackTrace();
} catch (SOAPException e) {
e.printStackTrace();
}
}
漂浮大陆
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String outString ="
Sending and reading the SOAP Message
";
try {
MessageFactory messageFactory = wInstance();
SOAPMessage outgoingMessage = ateMessage();
SOAPPart soappart = SOAPPart();
SOAPEnvelope envelope = Envelope();
SOAPHeader header = Header();
SOAPBody body = Body();
body.ateName("numberAvailable", "laptops", "/")).addTextNode("216"); StringBuffer serverUrl = new StringBuffer();
serverUrl.Scheme()).append("://").ServerName());
serverUrl.append(":").ServerPort()).ContextPath());
String baseUrl = String();
URL url = new URL(baseUrl + "/test.html");
AttachmentPart attachmentpart = ateAttachmentPart(new DataHandler(url));
attachmentpart.setContentType("text/html");
outgoingMessage.addAttachmentPart(attachmentpart);
URL client = new URL(baseUrl + "/DemoReceiver");
vvint
FileOutputStream outgoingFile = new FileOutputStream("out.msg");
outgoingMessage.writeTo(outgoingFile);
outgoingFile.close();
张紧轮
outString += "SOAP outgoingMessage sent (see out.msg).
"+baseUrl+"
";
SOAPMessage incomingMessage = connection.call(outgoingMessage, client);
if (incomingMessage != null) {
FileOutputStream incomingFile = new FileOutputStream("in.msg");
incomingMessage.writeTo(incomingFile);
incomingFile.close();
}
} catch (SOAPException e) {
e.printStackTrace();
}
try {
OutputStream outputStream = OutputStream();
outputStream.Bytes());
outputStream.flush();
outputStream.close();
} catch (IOException e) {}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
受体激动剂}
}
DemoReceiver.java
Java代码红外线烤炉
package cody.soap.demo;
import java.util.Iterator;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
l.messaging.JAXMServlet;
l.messaging.ReqRespListener;
l.soap.MessageFactory;
l.soap.SOAPBody;
l.soap.SOAPElement;
l.soap.SOAPEnvelope;
l.soap.SOAPException;
l.soap.SOAPMessage;
l.soap.SOAPPart;不干胶贴标
public class DemoReceiver extends JAXMServlet implements ReqRespListener{
* Generated automatically
*/
private static final long serialVersionUID = 1L;
private static MessageFactory messageFactory = null;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
super.init(servletConfig);
try {
messageFactory = wInstance();
} catch (SOAPException e) {
e.printStackTrace();
}
}
@Override
public SOAPMessage onMessage(SOAPMessage msg) {
SOAPPart soappart = SOAPPart();
try {
SOAPEnvelope incomingEnvelope;
incomingEnvelope = Envelope();
SOAPBody body = Body();
Iterator> iterator = ateName("numberAvailable", "laptops", "
SOAPElement element;
element = (SOAPElement) ();
SOAPMessage message = ateMessage();
SOAPEnvelope envelope = SOAPPart().getEnvelope();
SOAPBody responsebody = Body();
String responseText = "Got the SOAP message indicating there are " + Value() + " laptops available."; responsebody.ateName("Response")).addTextNode(responseText);
return message;
} catch (SOAPException e) {
e.printStackTrace();
return null;
}

本文发布于:2023-05-22 04:52:50,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/108592.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:版本   下载   灵活性   实现   附件   返回
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图