Still working on the deploy tooling and finding tons of things that need to be cleaned. Here's a good one. Can you guess what this means?

If you executed this code on a server that wasn't started or was using a different port than you expected:

        Properties p = new Properties();
p.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
        p.setProperty(Context.PROVIDER_URL, "ejbd://localhost:4201");

        InitialContext initialContext = new InitialContext(p);
        Object o = initialContext.lookup("z");

.. you'd get this exception.  Pretty terrible.

<before>
WARNING: Cannot access server(s): localhost:4201 Exception:
java.io.IOException: Cannot access server: localhost:4201 Exception: java.net.ConnectException : Connection refused at org.apache.openejb.client.SocketConnectionFactory $SocketConnection.open(SocketConnectionFactory.java:54) at org.apache.openejb.client.SocketConnectionFactory.getConnection (SocketConnectionFactory.java:34) at org.apache.openejb.client.ConnectionManager.getConnection (ConnectionManager.java:43)
        at org.apache.openejb.client.Client.processRequest(Client.java:60)
        at org.apache.openejb.client.Client.request(Client.java:40)
        at org.apache.openejb.client.JNDIContext.request(JNDIContext.java:72)
        at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:195)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at org.acme.MySuperApp.main(MySuperApp.java:23)
Error closing connection with server: null
Exception in thread "main" javax.naming.NamingException: Cannot lookup /z: Received error: Error while communicating with server: ; nested exception is: java.rmi.RemoteException: Cannot access servers: Server #0: ejbd:// localhost:4201 [Root exception is java.rmi.RemoteException: Error while communicating with server: ; nested exception is: java.rmi.RemoteException: Cannot access servers: Server #0: ejbd:// localhost:4201]
        at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:197)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at org.acme.MySuperApp.main(MySuperApp.java:23)
Caused by: java.rmi.RemoteException: Error while communicating with server: ; nested exception is: java.rmi.RemoteException: Cannot access servers: Server #0: ejbd:// localhost:4201
        at org.apache.openejb.client.Client.processRequest(Client.java:169)
        at org.apache.openejb.client.Client.request(Client.java:40)
        at org.apache.openejb.client.JNDIContext.request(JNDIContext.java:72)
        at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:195)
        ... 2 more
Caused by: java.rmi.RemoteException: Cannot access servers: Server #0: ejbd://localhost:4201
        at org.apache.openejb.client.Client.processRequest(Client.java:75)
        ... 5 more
</before>

So I've hammered on this quite a bit and now we have this :)

<after>
Exception in thread "main" javax.naming.ServiceUnavailableException: Cannot lookup '/z'. [Root exception is java.net.ConnectException: Cannot connect to server 'ejbd://localhost:4201'. Check that the server is started and that the specified serverURL is correct.]
        at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:201)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at org.acme.MySuperApp.main(MySuperApp.java:23)
Caused by: java.net.ConnectException: Cannot connect to server 'ejbd://localhost:4201'. Check that the server is started and that the specified serverURL is correct. at org.apache.openejb.client.SocketConnectionFactory $SocketConnection.open(SocketConnectionFactory.java:55) at org.apache.openejb.client.SocketConnectionFactory.getConnection (SocketConnectionFactory.java:35) at org.apache.openejb.client.ConnectionManager.getConnection (ConnectionManager.java:43)
        at org.apache.openejb.client.Client.processRequest(Client.java:60)
        at org.apache.openejb.client.Client.request(Client.java:40)
        at org.apache.openejb.client.JNDIContext.request(JNDIContext.java:74)
        at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:197)
        ... 2 more
</after>

If you see something like this in the code, report it or fix it. Hopefully we can get all common user-facing exceptions looking pretty snappy and clear.

One down, who knows how many to go :)

-David

Reply via email to