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.html

                 Tomcat 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



Reply via email to