David Blevins wrote:
Great. OpenEJB now supports the whole one-OpenEJB-per-webapp thing, which I think people will really like. If you wanted to write a FlashGuide for that, I'd be very happy to link to it from openejb.org.
I have found some curious errors in testing this. What I did was to copy the openejb-loader*.jar to my web application WEB-INF/lib directory. I edited WEB-INF/web.xml per the instructions:
<servlet>
<servlet-name>loader</servlet-name>
<servlet-class>org.openejb.loader.LoaderServlet</servlet-class>
<init-param>
<param-name>openejb.loader</param-name>
<param-value>tomcat-webapp</param-value>
</init-param>
<init-param>
<param-name>openejb.home</param-name>
<param-value>/usr/local/share/openejb1</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>In Tomcat 4 and 5, this generated a ClassNotFoundException for org.openejb.OpenEJB, from:
java.lang.NoClassDefFoundError: org/openejb/OpenEJB
at org.openejb.loader.EmbeddedLoader.load(EmbeddedLoader.java:59)
at org.openejb.loader.EmbeddingLoader.load(EmbeddingLoader.java:82)
at org.openejb.client.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:68)
It seems like the classpath thingy isn't working right?
Another problem is that, if you leave out the "openejb.loader" init-param, embedded OpenEJB loads just fine. However, you can't access any beans from that web application! For example, if I have this in my WEB-INF/web.xml:
<servlet>
<servlet-name>loader</servlet-name>
<servlet-class>org.openejb.loader.LoaderServlet</servlet-class>
<init-param>
<param-name>openejb.home</param-name>
<param-value>/usr/local/share/openejb1</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>I get the lovely ClassCastException at PortableRemoteObject.narrow. Is that the expected behavior?
For the record, I'm getting the bean reference thusly:
Properties p = new Properties();
p.put("java.naming.factory.initial",
"org.openejb.client.LocalInitialContextFactory");
javax.naming.InitialContext ctx = new javax.naming.InitialContext(p);
Object obj = ctx.lookup("/SimpleTest");
The webadmin app doesn't seem to work, but I'll have to keep investigating.
The only other problem I found were some project.xml errors, noted in my FlashGuide (wrong j2ee version & jta dependency missing). Don't know if you want me to make the changes or whether someone else can.
Hammer away.
It appears I don't have any CVS permissions. Is there another way?
Regards,
Lajos
--
Lajos Moczar
----------------------------------------
Open Source Support, Consulting and Training
----------------------------------------
"The Open Source Monopoly"
www.galatea.com/opensource.htmlTomcat Unleashed (www.amazon.com/exec/obidos/tg/detail/-/0672326361)
Cocoon Developer's Handbook (www.amazon.com/exec/obidos/tg/detail/-/0672322579)
_ _____
/ \ /
/___\ /
/ \ /____http://www.galatea.com -- powered by AzSSL
