I never got hot deploy to work on tomcat. I didn't put much effort into trying because I knew that we were going to be using jetty anyway. I'll have to try that but I would guess that I would get the same problems because the server would still try to load the dll file again.
RoyPorter wrote: > > Does the same thing happen if you're using hot deploying under Tomcat? > > I've recently left a lead architect position at another company, where the > 'DAO layer' was basically SAP JCO calls. I never had the issue you're > getting here. I never tried jetty however, the code was based on a version > of Equinox about 3 years old, so it was Ant, and we used Tomcat locally > for testing before deploying to a remote SAP Netweaver server. > > > > > > caius_swopes wrote: >> >> I'm using the SAP JCO connector. I have only one appfuse application >> running on one jetty server There are two dll files that must be placed >> in the system32 folder for the JCO connector to work. One of those dll >> files is named sapjcorfc.dll. >> My application works fine when I do mvn jetty:run. The problem occurs >> when the maven-jetty-plugin redeploys the server due to a change to a >> file. From what I gather from other forums including the sap forum (see >> this thread: https://www.sdn.sap.com/irj/sdn/thread?threadID=15622 ), >> sapjcorfc.dll does not like to be loaded more than once "per machine". >> Since I can completely restart maven with everything working fine and >> only a hot redeploy causes problems, I assume that in an >> appfuse/jetty/maven context this would mean "per server startup". Is >> there anyway for me to tell the class loader, upon hot redeploy, to not >> load the dll file? >> >> I'm not sure if this has anything to do with the problem but I found >> something odd in the error below. If you look at the java.library.path >> there are extra entries that are not part of my path environment >> variable. >> >> Here are my system path environment variables (where >> system.root=C:\WINDOWS): >> %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;D:\IBM\CLIENT~1;D:\IBM\CLIENT~1\Shared;D:\IBM\CLIENT~1\Emulator;C:\Program >> Files\Common Files\Adaptec >> Shared\System;D:\QuickTime\QTSystem\;%JAVA6_HOME%\bin;%ANT_HOME%\bin;%CATALINA_HOME%\bin;%MYSQL_HOME%\bin;%JAVAEE_HOME%\bin;D:\md5sum.exe;%JAVA_HOME%\bin;%MAVEN_HOME%\bin;%JETTY_HOME%\bin;%JETTY_HOME%;%ANT_OPTS%;d:\Program >> Files\Subversion\bin >> >> Here is the error: >> >> 2007-11-15 11:28:50.995::WARN: EXCEPTION >> java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not >> load mid >> dleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC' >> JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc >> [Native Li >> brary C:\WINDOWS\system32\sapjcorfc.dll already loaded in another >> classloader]. >> java.library.path >> [C:\Java\jdk1.5.0\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\WIND >> OWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;D:\IBM\CLIENT~1;D:\IBM\CLIENT~1 >> \Shared;D:\IBM\CLIENT~1\Emulator;C:\Program Files\Common Files\Adaptec >> Shared\Sy >> stem;D:\QuickTime\QTSystem\;C:\Java\jdk1.6.0\bin;D:\apache-ant-1.7.0\bin;D:\wamp >> \tomcat\bin;D:\wamp\mysql\bin;C:\Sun\SDK\bin;D:\md5sum.exe;C:\Java\jdk1.5.0\bin; >> D:\maven-2.0.7\bin;D:\jetty-6.1.5\bin;D:\jetty-6.1.5;-Xmx1536M;d:\Program >> Files\ >> Subversion\bin;C:\Sun\SDK\bin] >> at com.sap.mw.jco.JCO.<clinit>(JCO.java:776) >> at >> com.amersports.extranet.webapp.servlet.JCOConnectionServlet.init(JCOC >> onnectionServlet.java:37) >> at javax.servlet.GenericServlet.init(GenericServlet.java:241) >> at >> org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.jav >> a:433) >> at >> org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:25 >> 6) >> at >> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: >> 40) >> at >> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.ja >> va:612) >> at >> org.mortbay.jetty.servlet.Context.startContext(Context.java:139) >> at >> org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.jav >> a:1218) >> at >> org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java: >> 500) >> at >> org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448 >> ) >> at >> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: >> 40) >> at >> org.mortbay.jetty.plugin.Jetty6PluginWebApplication.start(Jetty6Plugi >> nWebApplication.java:144) >> at >> org.mortbay.jetty.plugin.AbstractJettyRunMojo$1.filesChanged(Abstract >> JettyRunMojo.java:423) >> at org.mortbay.util.Scanner.reportBulkChanges(Scanner.java:456) >> at org.mortbay.util.Scanner.reportDifferences(Scanner.java:327) >> at org.mortbay.util.Scanner.scan(Scanner.java:254) >> at org.mortbay.util.Scanner$1.run(Scanner.java:225) >> at java.util.TimerThread.mainLoop(Timer.java:512) >> at java.util.TimerThread.run(Timer.java:462) >> >> Thanks >> Caius >> >> > > -- View this message in context: http://www.nabble.com/Is-there-any-way-to-tell-the-ClassLoader-to-not-load-a-class-upon-redeploy--tf4816518s2369.html#a13783077 Sent from the AppFuse - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
