saaj发送soap消息出错
原代码:package com.channelsoft.saaj.soap;
import java.io.IOException;
import java.net.URL;
import javax.xml.messaging.URLEndpoint;
import javax.xml.soap.*;
public class SOAPSender {
/**
* @param args
* @throws SOAPException
* @throws IOException
*/
public static void main(String[] args) throws IOException, SOAPException {
SOAPSender sender = new SOAPSender();
SOAPMessage message = sender.getMessage();
sender.send(message);
}
public void send(SOAPMessage message) throws IOException, SOAPException {
// Create SOAP connection
SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();
SOAPConnection sc = scf.createConnection();
// Specify the endpoint
URL url = new URL("http://127.0.0.1:8080/saaj/Receiver");
// Send the SOAP message
SOAPMessage response = sc.call(message, url);
if (response != null) {
// Print the message to console
System.out.println("Receive SOAP message from localhost:");
response.writeTo(System.out);
} else {
System.err.println("No response received from partner!");
}
sc.close();
}
public SOAPMessage getMessage() throws SOAPException {
// Create a message factory
MessageFactory mf = MessageFactory.newInstance();
// Create a SOAP message
SOAPMessage message = mf.createMessage();
SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
// Add a namespace declaration to envelope element
envelope.addNamespaceDeclaration("cwmp", "some uri");
// Create header element
SOAPHeader header = envelope.getHeader();
// Create body element
SOAPBody body = envelope.getBody();
SOAPBodyElement bodyElement = body.addBodyElement(envelope.createName(
"Test", "cwmp", "uri"));
// add content to Test element
bodyElement.addTextNode("Just a test! ");
try {
// Print the message we have created above to console
message.writeTo(System.out);
} catch (IOException e) {
e.printStackTrace();
}
return message;
}
}
报错信息:
<?xml version="1.0" encoding="utf-8" standalone="yes"?><env:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="some uri" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><env:Header/><env:Body><cwmp:Test xmlns:cwmp="uri">Just a test! </cwmp:Test></env:Body></env:Envelope>Exception in thread "main" javax.xml.soap.SOAPException: Failed to send message: java.io.IOException: The server at http://127.0.0.1:8080/saaj/Receiver returned a 500 error code (Internal Server Error). Please ensure that your URL is correct, and the web service has deployed.
at weblogic.webservice.core.soap.SOAPConnectionImpl.call(SOAPConnectionImpl.java:61)
at com.channelsoft.saaj.soap.SOAPSender.send(SOAPSender.java:36)
at com.channelsoft.saaj.soap.SOAPSender.main(SOAPSender.java:18)
Caused by: java.io.IOException: The server at http://127.0.0.1:8080/saaj/Receiver returned a 500 error code (Internal Server Error). Please ensure that your URL is correct, and the web service has deployed.
at weblogic.webservice.binding.http11.Http11ClientBinding.handleErrorResponse(Http11ClientBinding.java:123)
at weblogic.webservice.binding.http11.Http11ClientBinding.receive(Http11ClientBinding.java:220)
at weblogic.webservice.core.soap.SOAPConnectionImpl.call(SOAPConnectionImpl.java:57)
... 2 more
--------------------编程问答-------------------- 接收消息源代码:
package com.channelsoft.saaj.soap;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.xml.messaging.JAXMServlet;
import javax.xml.messaging.ReqRespListener;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPMessage;
public class ReceiveServlet extends JAXMServlet implements ReqRespListener {
private static final long serialVersionUID = 1L;
static MessageFactory mf = null;
static {
try {
mf = MessageFactory.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
};
public ReceiveServlet() {
super();
}
@Override
public SOAPMessage onMessage(SOAPMessage msg) {
// TODO Auto-generated method stub
SOAPMessage resp = null;
try {
System.out.println("Received message:");
msg.writeTo(new FileOutputStream(new File("../webapps/soapmessage.xml")));// I use tomcat so set this
resp = mf.createMessage();
SOAPEnvelope se = resp.getSOAPPart().getEnvelope();
se.getBody().addChildElement(se.createName("ResponseMessage")).addTextNode("Received Message,Thanks");
return resp;
} catch (Exception e) {
e.printStackTrace();
}
return resp;
}
public void init(ServletConfig config) throws ServletException {
System.out.println("init message:");
super.init(config);
Enumeration enu=config.getInitParameterNames();
while(enu.hasMoreElements()){
String paraName=(String)enu.nextElement();
System.out.println(paraName+": "+paraName);
}
}
}
--------------------编程问答-------------------- 都没人会嘛
一直报错:
java.lang.ClassNotFoundException: javax.xml.messaging.ReqRespListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2527)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1010)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1483)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1095)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
at java.lang.Thread.run(Thread.java:619)
我都引入了jar包,还报这些锤子错误 --------------------编程问答-------------------- weblogic的jar包哪里有啊?
补充:Java , Java EE