📄 jaxmorderserver.java
字号:
package webservices;
import java.util.Iterator;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
import javax.xml.soap.MessageFactory;
import javax.xml.messaging.JAXMServlet;
import javax.xml.messaging.ReqRespListener;
public class JAXMOrderServer extends JAXMServlet implements ReqRespListener
{
// CHANGE MARSHALING TO USE SOAPELEMENTFACTORY AT SOME POINT
public SOAPMessage onMessage(SOAPMessage message)
{
try
{
System.out.println("onMessage() called in JAXMOrderServer, message:\n");
message.writeTo(System.out);
System.out.println("");
SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
SOAPBody body = envelope.getBody();
Name orderName = envelope.createName("order",
"acme",
"http://acme.com/commerce");
Iterator iterator = body.getChildElements(orderName);
Order order = new Order();
if (iterator.hasNext())
{
SOAPBodyElement element = (SOAPBodyElement)iterator.next();
order.unmarshal(element, envelope);
}
else
{
throw new SOAPException("order SOAPElement is missing from SOAP body");
}
System.out.println("Got order from " + order.getName());
Receipt receipt = new Receipt(order.getName(), order.getAddress(),
order.getNumItems(), calculateCost(order));
//
// Generate the receipt
//
MessageFactory fac = MessageFactory.newInstance();
SOAPMessage msg = fac.createMessage();
SOAPEnvelope env = msg.getSOAPPart().getEnvelope();
Name receiptName = envelope.createName("receipt",
"acme",
"http://acme.com/commerce");
SOAPBodyElement rcpt = env.getBody().addBodyElement(receiptName);
receipt.marshal(rcpt, env);
return msg;
}
catch(Exception ex)
{
System.err.println("Error in processing or replying to a message: " + ex);
return null;
}
}
private double calculateCost(Order order)
{
// Sale now on - everything for $49.99
return order.getNumItems() * 49.99;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -