On Apr 15, 2009, at 10:42 AM, Zach Romans wrote:

Hi David,

I couldn't get the installer to work in my environment. It came back saying it couldn't find my catalina.sh file. Not sure why, but that's OK, as my Tomcat installation is mildly tweaked so I can keep all (or as many as possible) of the Tomcat distribution files "stock". And so a manual integration is vastly preferable to me.

By Reading The Friendly Source for Installer.java I figured out that I needed the Tomcat-specific loader JAR file and Listener classname.

Man after my own heart.

Also figured out the catalina.sh addition, and put that in my environment setup script (i.e. set the -javaagent in JAVA_OPTS prior to calling catalina.sh.)

Note that step is not required if either of the following are true:

  1.  you don't plan to use OpenJPA as your JPA provider
  2.  you plan to run on java 6

All I have left to do is extract the openejb.conf and logging.properties files into my $CATALINA_HOME/conf (sourced, respectively, from default.openejb.conf and logging.properties in the openejb-core-3.1.jar file.)

Right. Note that really we don't need the openejb.xml unpacking part, that will happen automatically at startup if we see there isn't one in the $CATALINA_HOME/conf/ directory. Same goes for the logging.properties except that Tomcat does have that file by default so we needed the installer code to append to it.

For the benefit of Unix hack SA dinosaurs like me, it would be great to have a documented/supported recipe for a manual integration. :-)

Definitely. The manual instructions were supposed to be just that, but they turned out to be the real dinosaur :-) Filed a jira for updating that page: https://issues.apache.org/jira/browse/OPENEJB-1019

-David



David Blevins wrote, On 4/15/2009 9:18 AM:
Hi Zach,
Those directions should probably be deleted. Simply deploying the openejb.war and then running through the "installer" link at http://localhost:8080/openejb/ is definitely the best approach. It will do the installation steps for you and tell you what it's doing. In 3.1 we updated the integration a bit and it looks like we forgot to update that page to reflect it. Add the openejb-tomcat- loader-3.1.jar to $CATALINA_HOME/lib and change the listener classname from "org.apache.openejb.loader.OpenEJBListener" to "org.apache.openejb.tomcat.loader.OpenEJBListener"
Definitely let us know if you have any more issues.
-David
On Apr 14, 2009, at 9:22 AM, Zach Romans wrote:
Hello,

I am getting a ClassNotFoundException for org.apache.openejb.loader.OpenEJBListener on Tomcat startup after copying the openejb-loader-3.1.jar into $CATALINA_HOME/lib and adding the Listener element to the server.xml.

I am using Tomcat 6.0.14 with Java 1.6.0_05 on Solaris 9.

I am trying to manually integrate as per http://openejb.apache.org/manual-installation.html , since the installer does not seem to like my tweaked-for-my-own- purposes Tomcat installation.

openejb.war downloaded and expanded to $CATALINA_HOME/webapps/ openejb:

{zr129649} phys-lsu-hadbms-tst-01:/local/DATA/SUNWtatc5/apache- tomcat-6.0.14
574 > ls webapps/openejb/
LICENSE.txt default.css images/ lib/ testsuite.jsp META-INF/ ejbclasses.html index.jsp re- help.html tomcat/ NOTICE.txt ejbref.html installer-view.jsp testejb.jsp viewclass.jsp README.txt enc-help.html invokeobj.jsp testhome.jsp viewejb.jsp WEB-INF/ howitworks.html juli.properties testint.jsp viewjndi.jsp

openejb-loader-3.1.jar copied to my $CATALINA_HOME/lib:

{zr129649} phys-lsu-hadbms-tst-01:/local/DATA/SUNWtatc5/apache- tomcat-6.0.14
575 > ls -l lib/open*
-rw-r--r-- 1 tdmsadm dba 12845 Apr 13 23:21 lib/openejb- javaagent-3.1.jar -rw-r--r-- 1 tdmsadm dba 34063 Apr 14 00:02 lib/openejb- loader-3.1.jar

and the Listener element added to my server.xml:

{zr129649} phys-lsu-hadbms-tst-01:/local/DATA/SUNWtatc5/apache- tomcat-6.0.14
576 > cat conf/server.xml
<!-- Note:  A "Server" is not itself a "Container", so you may not
   define subcomponents such as "Valves" at this level.
   Documentation at /docs/config/server.html
-->
<Server port="8006" shutdown="SHUTDOWN">
<!-- Listener for OpenEJB plugin -->
<Listener className="org.apache.openejb.loader.OpenEJBListener" />

complete contents of catalina.out from most recent startup attempt:

Apr 14, 2009 12:33:50 AM org.apache.tomcat.util.digester.Digester startElement
SEVERE: Begin event threw exception
java.lang.ClassNotFoundException: org.apache.openejb.loader.OpenEJBListener
      at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org .apache .tomcat .util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:205)
      at org.apache.tomcat.util.digester.Rule.begin(Rule.java:153)
at org .apache.tomcat.util.digester.Digester.startElement(Digester.java: 1276) at com .sun .org .apache .xerces .internal .parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501) at com .sun .org .apache .xerces .internal .parsers .AbstractXMLDocumentParser .emptyElement(AbstractXMLDocumentParser.java:179) at com .sun .org .apache .xerces .internal .impl .XMLDocumentFragmentScannerImpl .scanStartElement(XMLDocumentFragmentScannerImpl.java:1337) at com .sun .org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java: 2740) at com .sun .org .apache .xerces .internal .impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647) at com .sun .org .apache .xerces .internal .impl .XMLDocumentFragmentScannerImpl .scanDocument(XMLDocumentFragmentScannerImpl.java:508) at com .sun .org .apache .xerces .internal .parsers.XML11Configuration.parse(XML11Configuration.java:807) at com .sun .org .apache .xerces .internal .parsers.XML11Configuration.parse(XML11Configuration.java:737) at com .sun .org .apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com .sun .org .apache .xerces .internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java: 1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $JAXPSAXParser.parse(SAXParserImpl.java:522) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1562) at org.apache.catalina.startup.Catalina.load(Catalina.java: 504) at org.apache.catalina.startup.Catalina.load(Catalina.java: 538) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun .reflect .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
Apr 14, 2009 12:33:50 AM org.apache.catalina.startup.Catalina load
WARNING: Catalina.start using conf/server.xml:
java.lang.ClassNotFoundException: org.apache.openejb.loader.OpenEJBListener at org .apache .tomcat.util.digester.Digester.createSAXException(Digester.java: 2726) at org .apache .tomcat.util.digester.Digester.createSAXException(Digester.java: 2752) at org .apache.tomcat.util.digester.Digester.startElement(Digester.java: 1279) at com .sun .org .apache .xerces .internal .parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501) at com .sun .org .apache .xerces .internal .parsers .AbstractXMLDocumentParser .emptyElement(AbstractXMLDocumentParser.java:179) at com .sun .org .apache .xerces .internal .impl .XMLDocumentFragmentScannerImpl .scanStartElement(XMLDocumentFragmentScannerImpl.java:1337) at com .sun .org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java: 2740) at com .sun .org .apache .xerces .internal .impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647) at com .sun .org .apache .xerces .internal .impl .XMLDocumentFragmentScannerImpl .scanDocument(XMLDocumentFragmentScannerImpl.java:508) at com .sun .org .apache .xerces .internal .parsers.XML11Configuration.parse(XML11Configuration.java:807) at com .sun .org .apache .xerces .internal .parsers.XML11Configuration.parse(XML11Configuration.java:737) at com .sun .org .apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com .sun .org .apache .xerces .internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java: 1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $JAXPSAXParser.parse(SAXParserImpl.java:522) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1562) at org.apache.catalina.startup.Catalina.load(Catalina.java: 504) at org.apache.catalina.startup.Catalina.load(Catalina.java: 538) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun .reflect .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412) Apr 14, 2009 12:33:50 AM org.apache.tomcat.util.digester.Digester startElement
SEVERE: Begin event threw exception
java.lang.ClassNotFoundException: org.apache.openejb.loader.OpenEJBListener
      at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org .apache .tomcat .util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:205)
      at org.apache.tomcat.util.digester.Rule.begin(Rule.java:153)
at org .apache.tomcat.util.digester.Digester.startElement(Digester.java: 1276) at com .sun .org .apache .xerces .internal .parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501) at com .sun .org .apache .xerces .internal .parsers .AbstractXMLDocumentParser .emptyElement(AbstractXMLDocumentParser.java:179) at com .sun .org .apache .xerces .internal .impl .XMLDocumentFragmentScannerImpl .scanStartElement(XMLDocumentFragmentScannerImpl.java:1337) at com .sun .org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java: 2740) at com .sun .org .apache .xerces .internal .impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647) at com .sun .org .apache .xerces .internal .impl .XMLDocumentFragmentScannerImpl .scanDocument(XMLDocumentFragmentScannerImpl.java:508) at com .sun .org .apache .xerces .internal .parsers.XML11Configuration.parse(XML11Configuration.java:807) at com .sun .org .apache .xerces .internal .parsers.XML11Configuration.parse(XML11Configuration.java:737) at com .sun .org .apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com .sun .org .apache .xerces .internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java: 1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $JAXPSAXParser.parse(SAXParserImpl.java:522) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1562) at org.apache.catalina.startup.Catalina.load(Catalina.java: 504) at org.apache.catalina.startup.Catalina.start(Catalina.java: 558) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun .reflect .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Apr 14, 2009 12:33:50 AM org.apache.catalina.startup.Catalina load
WARNING: Catalina.start using conf/server.xml:
java.lang.ClassNotFoundException: org.apache.openejb.loader.OpenEJBListener at org .apache .tomcat.util.digester.Digester.createSAXException(Digester.java: 2726) at org .apache .tomcat.util.digester.Digester.createSAXException(Digester.java: 2752) at org .apache.tomcat.util.digester.Digester.startElement(Digester.java: 1279) at com .sun .org .apache .xerces .internal .parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501) at com .sun .org .apache .xerces .internal .parsers .AbstractXMLDocumentParser .emptyElement(AbstractXMLDocumentParser.java:179) at com .sun .org .apache .xerces .internal .impl .XMLDocumentFragmentScannerImpl .scanStartElement(XMLDocumentFragmentScannerImpl.java:1337) at com .sun .org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java: 2740) at com .sun .org .apache .xerces .internal .impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647) at com .sun .org .apache .xerces .internal .impl .XMLDocumentFragmentScannerImpl .scanDocument(XMLDocumentFragmentScannerImpl.java:508) at com .sun .org .apache .xerces .internal .parsers.XML11Configuration.parse(XML11Configuration.java:807) at com .sun .org .apache .xerces .internal .parsers.XML11Configuration.parse(XML11Configuration.java:737) at com .sun .org .apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com .sun .org .apache .xerces .internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java: 1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $JAXPSAXParser.parse(SAXParserImpl.java:522) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1562) at org.apache.catalina.startup.Catalina.load(Catalina.java: 504) at org.apache.catalina.startup.Catalina.start(Catalina.java: 558) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun .reflect .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Apr 14, 2009 12:33:50 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 0 ms
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun .reflect .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.NullPointerException
at org.apache.catalina.startup.Catalina.await(Catalina.java: 630) at org.apache.catalina.startup.Catalina.start(Catalina.java: 590)
      ... 6 more

I'm no Java or Tomcat guru (I'm getting this setup for our sw developer), but to my knowledge, I do not need to do anything explicit to get Tomcat to "see" the .jar files placed in $CATALINA_HOME/lib.

Any advice/suggestions greatly appreciated.

aTdHvAaNnKcSe

- z

--
Zach Romans - Test Engineer IV                            [email protected]
WWOPS/Test Infrastructure Engineering ("desk") x30913/503-345-9313
Sun Microsystems, Inc
./.* "It's a hash of a hash of an array of hashes of arrays!"


--
Zach Romans - Test Engineer IV                            [email protected]
WWOPS/Test Infrastructure Engineering ("desk") x30913/503-345-9313
Sun Microsystems, Inc
./.* "It's a hash of a hash of an array of hashes of arrays!"


Reply via email to