You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Russ Leong <ru...@kikuze.com> on 2004/06/16 06:23:48 UTC

Configuring JNDI for tomcat

Hi, I am trying to configure tomcat 5.025 on W2K to be accessible by other machines via JNDI. I have tried using the registry method but am getting Connection refused. And when I try to filesystem approach I get NameNotFoundException.

I am new to both Tomcat and JNDI and hope to get some pointers. 

The way I'm testing now(local machine first) is I run tomcat with my server resource which I want to make accessible, then I try to "connect" by running my client code via the java command on my command prompt.

The following is how I am trying with the registry approach -

(jndi.properties in C:\j2sdk1.4.2_04\jre\lib)
java.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory
java.naming.provider.url=rmi:localhost:1099

(iccs.xml in C:\jakarta-tomcat-5.0.25\conf\Catalina\localhost)
<Resource name="bean/Jndi" auth="Container" type="test.JndiBean"/> 
 <ResourceParams name="bean/Jndi"> 
   <parameter>
     <name>factory</name>
     <value>org.apache.naming.factory.BeanFactory</value> 
   </parameter> 
   <parameter> 
     <name>bar</name> 
     <value>23</value> 
   </parameter> 
</ResourceParams> 

(JndiBean class in C:\jakarta-tomcat-5.0.25\webapps\iccs\WEB-INF\classes\test)
package test;
public class JndiBean {
    private String foo = "Default Foo";
    public String getFoo()          { return (this.foo); }
    public void setFoo(String foo)  { this.foo = foo; }
    
    private int bar = 0;
    public int getBar()             { return (this.bar); }
    public void setBar(int bar)     { this.bar = bar; }
}

(JndiClient class in C:\jakarta-tomcat-5.0.25\webapps\iccs\WEB-INF\classes\test)
package test;
import javax.naming.*;

public class JndiClient {
    public static void main(String[] args) {
        try {
            Context initCtx = new InitialContext();
            Context envCtx = (Context) initCtx.lookup("java:comp/env");
            JndiBean bean = (JndiBean) envCtx.lookup("bean/Jndi");
            System.out.println("foo = " + bean.getFoo() + ", bar = " + bean.getBar());
        }
        catch( Exception e ) { e.printStackTrace(); }
    }
}

And here is the error that I get
C:\>java -classpath C:\jakarta-tomcat-5.0.25\webapps\iccs\WEB-INF\classes test.JndiClient
javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: local
host; nested exception is:
        java.net.ConnectException: Connection refused: connect]
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:92)
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:98)
        at javax.naming.InitialContext.lookup(InitialContext.java:347)
        at test.JndiClient.main(JndiClient.java:9)
Caused by: java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
        java.net.ConnectException: Connection refused: connect
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:567)
        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:313)
        at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:88)
        ... 3 more
Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
        at java.net.Socket.connect(Socket.java:452)
        at java.net.Socket.connect(Socket.java:402)
        at java.net.Socket.<init>(Socket.java:309)
        at java.net.Socket.<init>(Socket.java:124)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:562)
        ... 8 more

Deeplyy appreciate any help from anyone. Thanks.
Russ

RE: Configuring JNDI for tomcat

Posted by Dave Bender <db...@umn.edu>.
Sounds like nothing's running on localhost port 1099.  I'm not a Tomcat expert so I don't know if Tomcat is supposed to be exposing its Naming Service on that port.  If it is, it isn't there.

Dave


-----Original Message-----
From: Russ Leong [mailto:russ@kikuze.com]
Sent: Tuesday, June 15, 2004 11:24 PM
To: tomcat-user@jakarta.apache.org
Subject: Configuring JNDI for tomcat


Hi, I am trying to configure tomcat 5.025 on W2K to be accessible by other machines via JNDI. I have tried using the registry method but am getting Connection refused. And when I try to filesystem approach I get NameNotFoundException.

I am new to both Tomcat and JNDI and hope to get some pointers. 

The way I'm testing now(local machine first) is I run tomcat with my server resource which I want to make accessible, then I try to "connect" by running my client code via the java command on my command prompt.

The following is how I am trying with the registry approach -

(jndi.properties in C:\j2sdk1.4.2_04\jre\lib)
java.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory
java.naming.provider.url=rmi:localhost:1099

(iccs.xml in C:\jakarta-tomcat-5.0.25\conf\Catalina\localhost)
<Resource name="bean/Jndi" auth="Container" type="test.JndiBean"/> 
 <ResourceParams name="bean/Jndi"> 
   <parameter>
     <name>factory</name>
     <value>org.apache.naming.factory.BeanFactory</value> 
   </parameter> 
   <parameter> 
     <name>bar</name> 
     <value>23</value> 
   </parameter> 
</ResourceParams> 

(JndiBean class in C:\jakarta-tomcat-5.0.25\webapps\iccs\WEB-INF\classes\test)
package test;
public class JndiBean {
    private String foo = "Default Foo";
    public String getFoo()          { return (this.foo); }
    public void setFoo(String foo)  { this.foo = foo; }
    
    private int bar = 0;
    public int getBar()             { return (this.bar); }
    public void setBar(int bar)     { this.bar = bar; }
}

(JndiClient class in C:\jakarta-tomcat-5.0.25\webapps\iccs\WEB-INF\classes\test)
package test;
import javax.naming.*;

public class JndiClient {
    public static void main(String[] args) {
        try {
            Context initCtx = new InitialContext();
            Context envCtx = (Context) initCtx.lookup("java:comp/env");
            JndiBean bean = (JndiBean) envCtx.lookup("bean/Jndi");
            System.out.println("foo = " + bean.getFoo() + ", bar = " + bean.getBar());
        }
        catch( Exception e ) { e.printStackTrace(); }
    }
}

And here is the error that I get
C:\>java -classpath C:\jakarta-tomcat-5.0.25\webapps\iccs\WEB-INF\classes test.JndiClient
javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: local
host; nested exception is:
        java.net.ConnectException: Connection refused: connect]
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:92)
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:98)
        at javax.naming.InitialContext.lookup(InitialContext.java:347)
        at test.JndiClient.main(JndiClient.java:9)
Caused by: java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
        java.net.ConnectException: Connection refused: connect
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:567)
        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:313)
        at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:88)
        ... 3 more
Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
        at java.net.Socket.connect(Socket.java:452)
        at java.net.Socket.connect(Socket.java:402)
        at java.net.Socket.<init>(Socket.java:309)
        at java.net.Socket.<init>(Socket.java:124)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:562)
        ... 8 more

Deeplyy appreciate any help from anyone. Thanks.
Russ