You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ofbiz.apache.org by ryan <ry...@sourcelabs.com> on 2008/03/06 04:53:31 UTC

rmi and ssl - client socket factory NoClassDefFound Exception

Hello,

...still working on getting RMI and SSL completely sorted:

in ofbiz-containers.xml I have:

    <container name="rmi-dispatcher" 
class="org.ofbiz.service.rmi.RmiServiceContainer">
        <property name="bound-name" value="RMIDispatcher"/>
        <property name="bound-host" value="127.0.0.1"/>
        <property name="bound-port" value="1099"/>
        <property name="delegator-name" value="default"/>
        <property name="client-factory" 
value="org.ofbiz.service.rmi.socket.ssl.SSLClientSocketFactory"/>
        <property name="server-factory" 
value="org.ofbiz.service.rmi.socket.ssl.SSLServerSocketFactory"/>
        <property name="ssl-keystore" value=".keystore"/><!-- this is 
installed in the ${OFBIZ_HOME} dir-->
        <property name="ssl-keystore-type" value="JKS"/>
        <property name="ssl-keystore-pass" value="somegarbagepass"/>
        <property name="ssl-keystore-alias" value="ssl"/>
        <property name="ssl-client-auth" value="false"/>
    </container>

my client class is really simple (logging and extra exception handling 
left out)

public class RMIDispatcher {

  public String endpoint="rmi://somehost:1099/RMIDispatcher";
  public RemoteDispatcher remoteDispatcher = null;
  public Map rmiResult= null;
  public String[] loginParams = {};

  public RMIDispatcher() throws Exception {
    try {
      RemoteDispatcher remoteDispatcher = (RemoteDispatcher) 
Naming.lookup(endpoint);
    } catch (Exception e) {
      throw e;
    }
  }

  public Map dispatch(String method,String[] params) throws 
RemoteException, GenericServiceException {
    rmiResult = remoteDispatcher.runSync(method, UtilMisc.toMap(params));
    return rmiResult;
  }
}

when invoking the dispatch() method, I get the following:
java.lang.NoClassDefFoundError
    at 
org.ofbiz.service.rmi.socket.ssl.SSLClientSocketFactory.createSocket(SSLClientSocketFactory.java:42)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:569)
    at 
sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:306)
    at sun.rmi.transport.DGCImpl_Stub.clean(Unknown Source)
    at 
sun.rmi.transport.DGCClient$EndpointEntry.makeCleanCalls(DGCClient.java:630)
    at 
sun.rmi.transport.DGCClient$EndpointEntry.access$1700(DGCClient.java:144)
    at 
sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:544)
    at java.lang.Thread.run(Thread.java:613)

which I think means that 
org.ofbiz.base.util.SSLUtil.getSSLSocketFactory() is returning null.


So the question, why would that be? (argh - unfortunately, I haven't 
been able to get the client-side debugger attached to the sources for 
SSLUtil() hopefully its not obvious once I do that).

regards,
-Ryan

Resolved: re: rmi and ssl - client socket factory NoClassDefFound Exception

Posted by ryan <ry...@sourcelabs.com>.
Well, I figured it out - the NoClassDefFound was because I hadn't 
specified the dependency on JDBM in the client. Subsequently I also 
found some errors in my keystore.


ryan wrote:
> Hello,
>
> ...still working on getting RMI and SSL completely sorted:
>
> in ofbiz-containers.xml I have:
>
>    <container name="rmi-dispatcher" 
> class="org.ofbiz.service.rmi.RmiServiceContainer">
>        <property name="bound-name" value="RMIDispatcher"/>
>        <property name="bound-host" value="127.0.0.1"/>
>        <property name="bound-port" value="1099"/>
>        <property name="delegator-name" value="default"/>
>        <property name="client-factory" 
> value="org.ofbiz.service.rmi.socket.ssl.SSLClientSocketFactory"/>
>        <property name="server-factory" 
> value="org.ofbiz.service.rmi.socket.ssl.SSLServerSocketFactory"/>
>        <property name="ssl-keystore" value=".keystore"/><!-- this is 
> installed in the ${OFBIZ_HOME} dir-->
>        <property name="ssl-keystore-type" value="JKS"/>
>        <property name="ssl-keystore-pass" value="somegarbagepass"/>
>        <property name="ssl-keystore-alias" value="ssl"/>
>        <property name="ssl-client-auth" value="false"/>
>    </container>
>
> my client class is really simple (logging and extra exception handling 
> left out)
>
> public class RMIDispatcher {
>
>  public String endpoint="rmi://somehost:1099/RMIDispatcher";
>  public RemoteDispatcher remoteDispatcher = null;
>  public Map rmiResult= null;
>  public String[] loginParams = {};
>
>  public RMIDispatcher() throws Exception {
>    try {
>      RemoteDispatcher remoteDispatcher = (RemoteDispatcher) 
> Naming.lookup(endpoint);
>    } catch (Exception e) {
>      throw e;
>    }
>  }
>
>  public Map dispatch(String method,String[] params) throws 
> RemoteException, GenericServiceException {
>    rmiResult = remoteDispatcher.runSync(method, UtilMisc.toMap(params));
>    return rmiResult;
>  }
> }
>
> when invoking the dispatch() method, I get the following:
> java.lang.NoClassDefFoundError
>    at 
> org.ofbiz.service.rmi.socket.ssl.SSLClientSocketFactory.createSocket(SSLClientSocketFactory.java:42) 
>
>    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:569)
>    at 
> sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185)
>    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)
>    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:306)
>    at sun.rmi.transport.DGCImpl_Stub.clean(Unknown Source)
>    at 
> sun.rmi.transport.DGCClient$EndpointEntry.makeCleanCalls(DGCClient.java:630) 
>
>    at 
> sun.rmi.transport.DGCClient$EndpointEntry.access$1700(DGCClient.java:144)
>    at 
> sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:544) 
>
>    at java.lang.Thread.run(Thread.java:613)
>
> which I think means that 
> org.ofbiz.base.util.SSLUtil.getSSLSocketFactory() is returning null.
>
>
> So the question, why would that be? (argh - unfortunately, I haven't 
> been able to get the client-side debugger attached to the sources for 
> SSLUtil() hopefully its not obvious once I do that).
>
> regards,
> -Ryan