| org.cougaar.mts.base.LinkProtocol org.cougaar.mts.base.RPCLinkProtocol org.cougaar.lib.web.axis.mts.SOAPLinkProtocol
All known Subclasses: org.cougaar.lib.web.axis.mts.SSLSOAPLinkProtocol,
SOAPLinkProtocol | public class SOAPLinkProtocol extends RPCLinkProtocol (Code) | | This component is a SOAP-based
LinkProtocol that uses
the
WebServicesService to receive messages and Axis
Call s to send messages.
Load with:
<component
class='org.cougaar.lib.web.axis.mts.SOAPLinkProtocol'
insertionpoint='Node.AgentManager.Agent.MessageTransport.Component'/>
The current code is only partially an "open-messaging" format,
since the SOAP XML contains serialized Java Objects that are
equivalent to the objects passed by the RMI-based LinkProtocol.
Performance is about 5x slower than RMI. In a two-node localhost
"ping" test sending 2k messages back and forth as fast as possible,
the time to send a message in milliseconds were:
mean=15, stddev=14, min=9, max=122
as compared to RMI:
mean= 3, stddev= 2, min=2, max= 54
This matches Axis performance metrics found in several research
papers, e.g. Performance of Web Services.
|
Inner Class :protected class SOAPDestinationLink extends Link | |
computeCost | protected int computeCost(AttributedMessage message)(Code) | | estimated cost for HTTP-based SOAP, which is simplyhard-coded to be more than the RMI & HTTP LinkProtocols. |
findOrMakeNodeServant | protected void findOrMakeNodeServant()(Code) | | A local agent has registered in the MTS, so deploy our WSDD,
advertise ourselves in the WP, and get ready to receive messages.
If we've already registered then this is a no-op.
The one snag is that the node may register early on, before
the WebServicesService is available, so we use a
ServiceAvailabiltyListener in case the service isn't available
yet.
|
getProtocolType | public String getProtocolType()(Code) | | the naming service "AddressEntry" type |
releaseNodeServant | protected void releaseNodeServant()(Code) | | |
remakeNodeServant | protected void remakeNodeServant()(Code) | | Handle IP address change.
Servlets handle the new-address case automatically, so this is
a no-op.
|
unload | public void unload()(Code) | | If we registered a WSDD, unregister here.
|
usesEncryptedSocket | protected Boolean usesEncryptedSocket()(Code) | | true of the socket is encrypted |
|
|