Marshalling and Connection Factories
The set up of marshalling objects on a connection factory is done once per connection. To set up marshalling, you use the webMethods connection factory interface WmConnectionFactory. This interface defines the following methods for marshalling:
Set the outbound marshalling object (
setMarshalOut())
Set the inbound marshalling object (
setMarshalIn())
Set/get the inbound marshaller class name (
setMarshalInClassName(), getMarshalInClassName())
Set/get the outbound marshaller class name (
setMarshalOutClassName(), getMarshalOutClassName())
The first two methods offer the greatest flexibility in using the marshalling feature, allowing you to pass in a user data object containing context information. These methods are useful when writing marshalling code.
The last two methods are employed when setting marshalling properties in a connection factory with the JMSAdmin command-line tool. The methods store class names and bind objects to JNDI. However, if these methods are used, you cannot configure a user data object; a Null value is always returned for a user data object.
Changing the marshalling objects on a WmConnectionFactory affects new connections created from that factory. Existing connections continue to use the marshalling objects that were set when they were created.
Following are complete definitions of the marshalling-related methods of the webMethods WmConnectionFactory interface:
public interface WmConnectionFactory {
...
public void setMarshalOut(WmMarshalOut marshaller, Object userData)
throws JMSException;
public WmMarshalOut getMarshalOut() throws JMSException;
public void setMarshalOutClassName(String className)
throws JMSException;
public String getMarshalOutClassName() throws JMSException;
public void setMarshalIn(WmMarshalIn marshaller, Object userData);
throws JMSException
public WmMarshalIn getMarshalIn() throws JMSException;
public void setMarshalInClassName(String className);
throws JMSException;
public String getMarshalInClassName() throws JMSException;
...
}
Below is some sample code that shows how to implement WmConnectionFactory:
Counter counter = new Counter();
WmConnectionFactory factory;
Connection conn;
// Create the connection factory
factory = WmJMSFactory.getConnectionFactory();
// Set up the marshalling methods.
factory.setMarshalOut(new SimpleMarshalOut(), counter);
factory.setMarshalIn(new SimpleMarshalIn(), counter);
// Set up the ConnectionFactory's other properties as needed.
factory.setBrokerHost(brokerHost);
factory.setBrokerName(brokerName);
factory.setClientGroup(jmsClientGroup);
// Set up the JMS connection.
conn = factory.createConnection();