Here follows a part of the code I used from a class running under
Tomcat(running as a separate bundle) to retrieve a reference to a session
bean deployed under Jboss:

try {
InitialContext context;
//setJbossProperties returns a Properties object loaded with jndi.properties
(see at bottom its implementation)
context = new InitialContext(setJbossProperties());
Object node = context.lookup(sessionName);
UsersDbManagerHome home =
(UsersDbManagerHome)PortableRemoteObject.narrow(node,
UsersDbManagerHome.class);
bean = home.create();
} catch (RemoteException e) {
System.err.println("RemoteException in creating the DbManagerService...");
return null;
} catch (CreateException e) {
System.err.println("CreateException in creating the DbManagerService...");
return null;
}
catch (NamingException e1) {
System.err.println("NamingException in creating the DbManagerService...");
System.err.println("This exception could mean that the application server
may be not running or" +
"\nthe information provided in the jndi.properties file are not of the right
" +
"type. \nPlease ensure that the application server is up and running and the
" +
"\ninformation provided in the jndi.properties file are of the right
type.");
return null;
}

Here follows the setJbossProperties() method:

public Properties setJbossProperties() {

ClassLoader loader = getClass().getClassLoader();

InputStream is = loader.getResourceAsStream("jndi.properties");

Properties properties = new Properties();

logger.info("Trying to load the jndi.properties file");

try {

properties.load(is);

setJbossProperties(properties);

logger.info("jndi.properties file loaded");

} catch (IOException e) {

logger.error("Problem during loading of jndi.properties");

}

return properties;

}

Hope it will help,

Marco
----- Original Message ----- 
From: jonathan wong
To: [EMAIL PROTECTED]
Sent: Tuesday, June 10, 2003 3:42 AM
Subject: Re: [JBoss-user] Hello ! The problem of JNDI in JSP !


Dear all ,
 Hello ! Thank you for all your help . I try to rewrite the JSP like follow
:

<%@ page
   session="false"
   isThreadSafe="true"
   isErrorPage="false"
   import="javax.naming.*,java.util.*,
           com.sample.*"
%>
<%
   try {
     Properties properties = new Properties();
   properties.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
      properties.put(Context.PROVIDER_URL, "localhost:1099");
      Context lContext = new InitialContext(properties);
      HelloWorldHome lHome = (HelloWorldHome) lContext.lookup(
         "java:/com/sample/HelloWorld"
   );
      HelloWorld lSession = lHome.create();
      out.println( "" + lSession.hello() );
   }
   catch( Exception e ) {
      out.println( "Caugth exception: " + e.getMessage() );
      e.printStackTrace();
   }
%>

 Also , the "jndi.properties" resides the WEB-INF\classes , the structure as
follow :

E:\jboss\tomcat-4.1.x\webapps\test\WEB-INF\classes
E:\jboss\tomcat-4.1.x\webapps\test\WEB-INF\classes\jndi.properties

 However , the Tomcat still says "Name com is not bound in this Context " if
I load the JSP ? Therefore , should I have the futher configurations ? ( I
so confuse to place and use jndi.properties and JNDI ) Thank you !

Marco Tedone <[EMAIL PROTECTED]> wrote:
A couple of considerations:

1) If your JSP is running from a context different from Jboss, then you
should create the InitialContext using the jndi.properties file like:

        InitialContext context = new InitialContext(properties);

2) The jndi name of your bean could be probably looked up as:

            com/sample/HelloWorld (jboss.xml <jndi-name> element)

3) The jndi.properties file could(should?) reside under WEB-INF/classes (but
I could be wrong on it!)

Hope it will help,

Marco


----- Original Message ----- 
From: jonathan wong
To: [EMAIL PROTECTED]
Sent: Monday, June 09, 2003 6:56 PM
Subject: [JBoss-user] Hello ! The problem of JNDI in JSP !


Dear all ,
 Hello ! I am a beginner of JBoss 3.0.7 . I encounter a problem of JNDI in
JSP . The file structure like follow :
E:\JBoss3T\test_EJB\com\sample\HelloWorld.class
E:\JBoss3T\test_EJB\com\sample\HelloWorldBean.class
E:\JBoss3T\test_EJB\com\sample\HelloWorldHome.class

And the ejb-jar.xml like follow :
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar>
    <description>JBoss Hello World Application</description>
    <display-name>Hello World EJB</display-name>
    <enterprise-beans>
        <session>
            <ejb-name>HelloWorld</ejb-name>
            <home>com.sample.HelloWorldHome</home>
            <remote>com.sample.HelloWorld</remote>
            <ejb-class>com.sample.HelloWorldBean</ejb-class>
            <session-type>Stateless</session-type>
            <transaction-type>Container</transaction-type>
        </session>
    </enterprise-beans>
</ejb-jar>

The jboss.xml like follow :
<jboss>
    <enterprise-beans>
        <session>
            <ejb-name>HelloWorld</ejb-name>
            <jndi-name>com/sample/HelloWorld</jndi-name>
        </session>
    </enterprise-beans>
</jboss>

The JSP is as follow :
<%@ page
   session="false"
   isThreadSafe="true"
   isErrorPage="false"
   import="javax.naming.*,
           com.sample.*"
%>
<%
   try {
      Context lContext = new InitialContext();
      HelloWorldHome lHome = (HelloWorldHome) lContext.lookup(
         "java:comp/env/com/sample/HelloWorld"
   );
      HelloWorld lSession = lHome.create();
      out.println( "" + lSession.hello() );
   }
   catch( Exception e ) {
      out.println( "Caugth exception: " + e.getMessage() );
      e.printStackTrace();
   }
%>

I also reside the jndi.properties with WEB-INF ( I use the standalone
Tomcat ) . The JNDI is displayed in global JNDI Namespace in jmx-console .
However , the Tomcat says "Name com is not bound in this Context" .
Therefore , what should I further configue ?


Jonathan
(Wong Yat Sing)
Jonathan Studio
M.P (852) - 91235947
NetMeeting : [EMAIL PROTECTED]
ICQ# 57646152



Do you Yahoo!?
Free online calendar with sync to Outlook(TM).


Jonathan
(Wong Yat Sing)
Jonathan Studio
M.P (852) - 91235947
NetMeeting : [EMAIL PROTECTED]
ICQ# 57646152



Do you Yahoo!?
Free online calendar with sync to Outlook(TM).





-------------------------------------------------------
This SF.net email is sponsored by:  Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to