apart from the name of the variables... no csf and ssf please doesn't mean
anything to me... name them clientSocketFactory since they are "non common"
objects otherwise you end up with a lot of navigation.
other than that it is ok...
wouldn't that be the place to specify the "ssl" sockets with RMI?
marc
|-----Original Message-----
|From: [EMAIL PROTECTED]
|[mailto:[EMAIL PROTECTED]]On Behalf Of Scott M Stark
|Sent: Wednesday, March 14, 2001 2:41 PM
|To: JBoss-Dev
|Subject: [jBoss-Dev] Update to allow custom socket factories on
|JRMPContainerInvoker
|
|
|I have an update that allows one to specify custom RMI socket factories
|as part of the container-invoker-conf. An example usage is:
|
|<!-- Override the default container socket factories -->
|<container-invoker-conf>
| <Optimized>true</Optimized>
| <RMIObjectPort>4445</RMIObjectPort>
|
|<RMIClientSocketFactory>org.jboss.test.jrmp.ejb.CompressionClientSo
cketFactory</RMIClientSocketFactory>
|
|<RMIServerSocketFactory>org.jboss.test.jrmp.ejb.CompressionServerSo
cketFactory</RMIServerSocketFactory>
|</container-invoker-conf>
|
|It is actually a rather minor change to the current
|JRMPContainerInvoker class. The cvs diff
|is given below. Any objections to committing this?
|
|
|server 733>cvs diff JRMPContainerInvoker.java
|Index: JRMPContainerInvoker.java
|===================================================================
|RCS file:
|/products/cvs/ejboss/jboss/src/main/org/jboss/ejb/plugins/jrmp/server/
|JRMPContainerInvoker.java,v
|retrieving revision 1.35
|diff -r1.35 JRMPContainerInvoker.java
|18a19,20
|> import java.rmi.server.RMIClientSocketFactory;
|> import java.rmi.server.RMIServerSocketFactory;
|90a93,96
|> protected RMIClientSocketFactory csf;
|> protected RMIServerSocketFactory ssf;
|> protected String csfClassName;
|> protected String ssfClassName;
|133d138
|<
|254c259
|< UnicastRemoteObject.exportObject(this, rmiPort);
|---
|> UnicastRemoteObject.exportObject(this, rmiPort, csf, ssf);
|479,509c484,558
|< // XmlLoadable implementation
|< public void importXml(Element element) throws DeploymentException
|< {
|< String opt =
|MetaData.getElementContent(MetaData.getUniqueChild(element,
| "Optimized"));
|< optimize = Boolean.valueOf(opt).booleanValue();
|<
|< if
|((System.getProperty("java.vm.version").compareTo("1.3") >= 0)) jdk12
|2 = false;
|< else jdk122 = true;
|<
|< // Create delegate depending on JDK version
|< if (jdk122)
|< {
|< ciDelegate = new
|org.jboss.ejb.plugins.jrmp12.server.JRMPContainerInv
|oker(this);
|< } else
|< {
|< ciDelegate = new
|org.jboss.ejb.plugins.jrmp13.server.JRMPContainerInv
|oker(this);
|< }
|<
|< try
|< {
|< String port =
|MetaData.getElementContent(MetaData.getUniqueChild(elem
|ent, "RMIObjectPort"));
|< rmiPort = Integer.parseInt(port);
|< } catch(NumberFormatException e)
|< {
|< rmiPort = ANONYMOUS_PORT;
|< } catch(DeploymentException e)
|< {
|< rmiPort = ANONYMOUS_PORT;
|< }
|< Logger.debug("Container Invoker RMI Port='"+(rmiPort ==
|ANONYMOUS_PORT ?
| "Anonymous" : Integer.toString(rmiPort))+"'");
|< Logger.debug("Container Invoker Optimize='"+optimize+"'");
|---
|> // XmlLoadable implementation
|> public void importXml(Element element) throws DeploymentException
|> {
|> Element optElement = MetaData.getUniqueChild(element,
|"Optimized");
|> if( optElement != null )
|> {
|> String opt = MetaData.getElementContent(optElement);
|> optimize = Boolean.valueOf(opt).booleanValue();
|> }
|>
|> if
|((System.getProperty("java.vm.version").compareTo("1.3") >= 0))
|> jdk122 = false;
|> else
|> jdk122 = true;
|>
|> // Create delegate depending on JDK version
|> if (jdk122)
|> {
|> ciDelegate = new
|org.jboss.ejb.plugins.jrmp12.server.JRMPContainer
|Invoker(this);
|> }
|> else
|> {
|> ciDelegate = new
|org.jboss.ejb.plugins.jrmp13.server.JRMPContainer
|Invoker(this);
|> }
|>
|> try
|> {
|> Element portElement =
|MetaData.getUniqueChild(element, "RMIObjectP
|ort");
|> if( portElement != null )
|> {
|> String port = MetaData.getElementContent(portElement);
|> rmiPort = Integer.parseInt(port);
|> }
|> } catch(NumberFormatException e)
|> {
|> rmiPort = ANONYMOUS_PORT;
|> } catch(DeploymentException e)
|> {
|> rmiPort = ANONYMOUS_PORT;
|> }
|>
|> // Load any custom socket factories
|> ClassLoader loader =
|Thread.currentThread().getContextClassLoader();
|> try
|> {
|> Element csfElement =
|MetaData.getOptionalChild(element, "RMIClient
|SocketFactory");
|> if( csfElement != null )
|> {
|> csfClassName = MetaData.getElementContent(csfElement);
|> }
|> }
|> catch(Exception e)
|> {
|> Logger.error(e);
|> csf = null;
|> }
|> try
|> {
|> Element ssfElement =
|MetaData.getOptionalChild(element, "RMIServer
|SocketFactory");
|> if( ssfElement != null )
|> {
|> ssfClassName = MetaData.getElementContent(ssfElement);
|> }
|> }
|> catch(Exception e)
|> {
|> Logger.error(e);
|> ssf = null;
|> }
|> loadCustomSocketFactories(loader);
|>
|> Logger.debug("Container Invoker RMI Port='"+(rmiPort ==
|ANONYMOUS_PORT
| ? "Anonymous" : Integer.toString(rmiPort))+"'");
|> Logger.debug("Container Invoker Client
|SocketFactory='"+(csf == null ?
| "Default" : csf.toString())+"'");
|> Logger.debug("Container Invoker Server
|SocketFactory='"+(ssf == null ?
| "Default" : ssf.toString())+"'");
|> Logger.debug("Container Invoker Optimize='"+optimize+"'");
|538a588,616
|> private void loadCustomSocketFactories(ClassLoader loader)
|> {
|> try
|> {
|> if( csfClassName != null )
|> {
|> Class csfClass = loader.loadClass(csfClassName);
|> csf = (RMIClientSocketFactory) csfClass.newInstance();
|> }
|> }
|> catch(Exception e)
|> {
|> Logger.error(e);
|> csf = null;
|> }
|> try
|> {
|> if( ssfClassName != null )
|> {
|> Class ssfClass = loader.loadClass(ssfClassName);
|> ssf = (RMIServerSocketFactory) ssfClass.newInstance();
|> }
|> }
|> catch(Exception e)
|> {
|> Logger.error(e);
|> ssf = null;
|> }
|> }
|
|
|