Enable the section you commented out in the web.xml file, and then try
accessing java:comp/env/Stamp. Or try browsing the JNDI context to see what's
in it. I think Sun provides a utility program for this purpose, but it's very
easy to just print the context and everything that's in it.
Ernst
James Ho wrote:
> Hi all,
>
> I have a urgent problem regarding EJB and servlet, I cannot find the
> home interface of the bean from the servlet (whereas a standalone
> client works very well)...Can anyone pls give me some hint as to what
> maybe be wrong here? Below is the background info, sorry, it is kind
> of long...
>
> My bean is called Stamp, the classes are
>
> stamp.ejb.Stamp - remote
> stamp.ejb.StampHome - home
> stamp.ejb.StampBean - bean class
> java.lang.String - primaryKey
>
> There are two applications deployed.
> stamps - the EJBs
> test - the servlets.
>
> My problem, I CANNOT get the bean in servlet :((
>
> Here is my ejb-jar.xml
>
> <ejb-jar>
> <description></description>
> <enterprise-beans>
> <entity>
> <description></description>
> <ejb-name>Stamp</ejb-name>
> <home>stamp.ejb.StampHome</home>
> <remote>stamp.ejb.Stamp</remote>
> <ejb-class>stamp.ejb.StampBean</ejb-class>
> <primkey-class>java.lang.String</primkey-class>
> <reentrant>True</reentrant>
> <persistence-type>Bean</persistence-type>
> </entity>
> </enterprise-beans>
>
> <assembly-descriptor>
> <security-role>
> <description>Users</description>
> <role-name>users</role-name>
> </security-role>
> <method-permission>
> <description>Restricted</description>
> <role-name>users</role-name>
> <method>
> <ejb-name>Stamp</ejb-name>
> <method-name>*</method-name>
> </method>
> </method-permission>
> </assembly-descriptor>
>
> </ejb-jar>
>
> It works when I used standalone client, having this..
> <application-client>
> <display-name>Stamp</display-name>
> <description>Example Bank</description>
> <ejb-ref>
> <ejb-ref-name>Stamp</ejb-ref-name>
> <ejb-ref-type>Entity</ejb-ref-type>
> <home>stamp.ejb.StampHome</home>
> <remote>stamp.ejb.Stamp</remote>
> </ejb-ref>
> </application-client>
>
>
> However, it doesn't work when using servlets, I have this..
>
> <web-app>
> <display-name>Testing app</display-name>
> <servlet>
> <servlet-name>HelloServlet</servlet-name>
> <description>Servlet that calls the Stamp bean</description>
> <servlet-class>vc.web.HelloServlet</servlet-class>
> </servlet>
> <servlet-mapping>
> <servlet-name>HelloServlet</servlet-name>
> <url-pattern>/test</url-pattern>
> </servlet-mapping>
>
> <!--
> <ejb-ref>
> <ejb-ref-name>Stamp</ejb-ref-name>
> <ejb-ref-type>Entity</ejb-ref-type>
> <home>stamp.ejb.StampHome</home>
> <remote>stamp.ejb.Stamp</remote>
> </ejb-ref>
> -->
> </web-app>
>
> Note that I have ejb-ref commented out, i had been told not to use
> ejb-ref in web.xml for my case, and I do a lookup on the global name
> of the bean, which is Stamp
>
> Object boundObject = context.lookup("Stamp");
>
> but resulted in "javax.naming.NameNotFoundException: Stamp not found"
>
> I have also been told that maybe it is because I hace the EJB/servlets
> deployed sepearately as two apps.
>
> I initialised the context using...
>
>
>env.put(Context.INITIAL_CONTEXT_FACTORY,"com.evermind.server.ApplicationInitialContextFactory");
> env
> put(Context.PROVIDER_URL,"ormi://p500.cheapdull.mine.nu/stamp");
> env.put(Context.SECURITY_PRINCIPAL,"admin");
> env.put(Context.SECURITY_CREDENTIALS,"123");
>
> context = new InitialContext(env);
>
> (similar in the client as well, but use
> ApplicationClientInitialContextFactory instead)
>
> so does any one has any suggestion as to what amI doing wrong here?
>
> Thanks heaps in advance. :)
>
> Regards, James.
>
>
>