You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-dev@xml.apache.org by Danh Hoai <ho...@indent.org> on 2001/06/27 20:01:04 UTC
problem running the StockQuote example
Hi all,
I am trying to use install apache-soap to work with Tomcat. It seems that
everything
goes well but when I attempt to run the testit.cmd from stockquote I get the
following error:
Ouch, the call failed:
Fault Code = SOAP-ENV:Server.Exception:
Fault String = org.w3c.dom.Node: method
getNamespaceURI()Ljava/lang/String; not found
I was able to deploy the StockQuoteService and tomcat running fine.
Thank you for your help
Question of Using JAXM from Sun
Posted by Danh Hoai <ho...@indent.org>.
Hi,
Has anyone used the JAXM from Sun yet? I am trying to run the 'simple
example' and trying to extract the contents of the elements in the SoapBody
but I am not able to do it. Please give me some ideas. I am new to XML and
Soap.
Please look at the package simple.receiver. Basically, at the receiver
endpoint, I try retrieve data from the Message.
Thank you for your help
The codes are below:
file://receiver section
package simple.receiver;
import javax.xml.messaging.*;
import javax.xml.soap.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.activation.DataHandler;
import java.util.*;
import org.jdom.*;
/**
* Sample servlet that receives messages.
*
* @author Rajiv Mordani (mode@eng.sun.com)
*/
public class ReceivingServlet extends JAXMServlet {
// Cache a copy of the connection.
Connection conn;
public void init(ServletConfig servletConfig) {
ServletContext ctxt = servletConfig.getServletContext();
ConnectionFactory cf = (ConnectionFactory)ctxt.
getAttribute("Senders");
try {
conn = cf.createConnection();
MessageFactory mf = conn.createMessageFactory();
// Need to invoke this so the doPost knows what factory to use
// to construct the message being delivered via http post.
setMessageFactory(mf);
System.err.println("ReceivingServlet initd");
} catch(Exception e) {
e.printStackTrace();
}
}
// This is the application code for handling the message.. Once the
// message is received the application can retrieve the soap part, the
// attachment part if there are any, or any other information from the
// message.
public Message onMessage(Message message) {
System.err.println("On message called in receiving servlet");
System.err.println("Receiver getting message...");
Message msg = null;
try {
Source src = message.getSOAPPart().getContentAs(
StreamSource.FEATURE);
SOAPPart sp = message.getSOAPPart();
file://orig msg = msgFactory.createMessage();
// SOAPPart sp = msg.getSOAPPart();
// System.out.println("conten location is: " + sp.getContentLocation());
SOAPEnvelope sel = sp.getSOAPEnvelope();
System.err.println(" after soapenv");
SOAPBody sb = sel.getSOAPBody();
sb.
System.err.println(" after soapenv1");
Document doc = sb.getDocument();
doc.getMixedContent();
System.out.println("root ele: " + rootEl.getName());
Element parentEl = sb.getParent();
String bodyName = parentEl.getName();
System.out.println("body element is: " + bodyName);
Namespace namespace = parentEl.getNamespace();
System.out.println("name space is: " + namespace.getURI());
sp.setContent(src);
} catch(Exception e) {
e.printStackTrace();
}
return msg;
}
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
file://sender section
package simple.sender;
import javax.servlet.http.*;
import javax.servlet.*;
import javax.xml.messaging.*;
import javax.xml.soap.*;
import org.jdom.*;
import javax.activation.DataHandler;
import java.net.*;
import java.io.*;
/**
* Sample servlet that is used for sending the message.
*
* @author Rajiv Mordani (mode@eng.sun.com)
*/
public class SendingServlet extends HttpServlet {
// Cache a copy of the connection to send messages.
private Connection con;
public void init(ServletConfig servletConfig) throws ServletException {
// We are using the ServletContext as the naming service to look up
// the ConnectionFactory. Ideally should be using JNDI. This will
// be fixed soon.
ServletContext ctxt = servletConfig.getServletContext();
try {
file://Look up a connection factory for the client to use.
ConnectionFactory cf = (ConnectionFactory)ctxt.getAttribute(
"Senders");
file://Create a connection from the connection factory looked up.
con = cf.createConnection();
} catch(Exception e) {
e.printStackTrace();
}
}
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException
{
try {
// Create a message factory from the connection obtained
// earlier.
MessageFactory mf = con.createMessageFactory();
// Create a message from the message factory.
Message msg = mf.createMessage();
// Message creation takes care of creating the SOAPPart - a
// required part of the message as per the SOAP 1.1
// specification.
SOAPPart sp = msg.getSOAPPart();
// Retrieve the envelope from the soap part to start building
// the soap message.
SOAPEnvelope envelope = sp.getSOAPEnvelope();
// Create a soap header from the envelope.
SOAPHeader hdr = envelope.createSOAPHeader();
// Create a soap body from the envelope.
SOAPBody bdy = envelope.createSOAPBody();
// Add a soap header element to the header.
SOAPHeaderElement
transaction = hdr.createSOAPHeaderElement("Transaction",
Namespace.getNamespace("t",
"some-URI"));
transaction.setMustUnderstand(true);
transaction.addContent("5");
// Add a soap body element to the soap body
SOAPBodyElement gltp =
bdy.createSOAPBodyElement("GetLastTradePrice", Namespace.getNamespace("m",
"some-other-URI"));
gltp.createSOAPElement("symbol", Namespace.getNamespace("m",
"some-other-URI")).addContent("DEF");
// Set the soap header and soap body on the envelope.
envelope.setSOAPHeader(hdr);
envelope.setSOAPBody(bdy);
System.err.println("Created SOAPPart");
// Want to set an attachment from the following url.
URL url = new URL("http://localhost:8080/simple/web.xml");
AttachmentPart ap
= msg.createAttachmentPart(new DataHandler(url));
ap.setContentType("text/xml");
// Add the attachment part to the message.
msg.addAttachmentPart(ap);
System.err.println("Added attachment");
// Create an endpoint for the recipient of the message.
Endpoint endPoint = new Endpoint("http://192.168.1.29:8080");
System.err.println("Sent message by Hoai");
// Send the message to the endpoint using the connection.
con.send(msg, endPoint); file://end point is defined in
web-in\provider.xml
// Send a response to the client.. Need to check the status if
// the message was actually sent. Not done that here as yet.
String retval = "<html><H4>Sent Message by Hoai</H4></html>";
OutputStream os = resp.getOutputStream();
os.write(retval.getBytes());
os.flush();
os.close();
}catch(Exception e) {
e.printStackTrace();
}
}
}
Re: problem running the StockQuote example
Posted by Yogesh Patange <yo...@plexustech.net>.
Hi danh
I was also getting the same error on JRun
The problem was JRun server was not getting the coreect path for xerces.jar file. When i corrected the path it started working .
I have't tried it with Tomcat, but the check the classpaths for tomcat server. Even u are running the application on Windows use forward slash "/" insted of "\"
Hope this will solve ur problem.
Yogesh
----- Original Message -----
From: Danh Hoai
To: soap-dev-subscribe@xml.apache.org
Cc: soap-dev@xml.apache.org
Sent: Wednesday, June 27, 2001 11:31 PM
Subject: problem running the StockQuote example
Hi all,
I am trying to use install apache-soap to work with Tomcat. It seems that everything
goes well but when I attempt to run the testit.cmd from stockquote I get the
following error:
Ouch, the call failed:
Fault Code = SOAP-ENV:Server.Exception:
Fault String = org.w3c.dom.Node: method getNamespaceURI()Ljava/lang/String; not found
I was able to deploy the StockQuoteService and tomcat running fine.
Thank you for your help