MG>Good Morning Luis I preface my comments with MG> > If I understand this, this means this is possible in J2EE, which I had read > about. But, what about TOMCAT? Is it possible to do the same thing in > Tomcat, just to see if that would solve my problem? MG>Tomcat is a container for servlets..not an EJB server..the good thing is you can run Tomcat inside *most* J2EE compliant EJB servers such as MG>OpenEJB/JBoss/OAS/SunAppServer MG>http://www.onjava.com/pub/a/onjava/2003/02/12/ejb_tomcat.html MG>http://www.theserverside.com/news/thread.tss?thread_id=2188 MG>http://www.oracle.com/appserver/index.html MG>http://www.sun.com/software/products/appsrvr/index.xml MG>I am most familiar with the Oracle offering and can help you with that > > I have looked around on the web, documentaiton and configuration files and > this does not seem to be possible in Tomcat > > >> 3) >> JNI: >> I *assume* you are attempting to build and configure your own mod_jk >> worker? >> http://tomcat.apache.org/connectors-doc/install/apache2.html >> This is system related stuff which assumes you are backing up your current >> installation beforehand >> and using Platform specific utilities (cl/gcc/iSeries) to essentially make >> your platform-specific binaries >> The important point here is to use the platform specific >> install/configuration/compile scripts which are blesses by the platform's >> vendor- >> > > No, I am trying to do something a lot simpler. > > See, we already have a server side implementation of the services in C++ > (Roguewave), but we are looking into a cheaper option, which is why I was > looking into axis/tomcat. My clients are using Axis anyway, so I thought > using Tomcat was going to be straight forward. > > So, we don't want to reimplement everything in Java, which means I only need > a jni wrapper in the axis server to call my DCE proxies in C++. So, the > picture looks like this > > axis Client --> axis Server --> jniWrapper --> DCEProxy (C++ implementation) MG>Assuming you placed axis.jar in your web-inf/lib MG>Assuming you have placed all of your supporting jars in (saaj.jar ..) in commons/lib MG>be mindful that you MUST declare Datatypes initially as SOAPDatatype and then convert to java datatype and then convert to C++ Datatype MG>the SOAP Datatype is covered by the WSDL declaration MG>The Java datatype is usually a Java bean MG>There is a JNI spec which covers how to declare Java methods and pass Java Datatypes to C apps please read MG>http://www.camtp.uni-mb.si/books/Thinking-in-Java/AppendixB.html MG>be mindful of introduction of objects in a method's parameter list changes the signature which has the unfortunate side effect of making the MG>method unrecognisable to extrenal entities..be mindful to make the method visible use the method calling convention supported by JNI of MG>extern "C" JNIEXPORT void JNICALL MG>to specify how parameters are pushed on the stack
> > And the problem lies on the fact that I need to place the jniWrapper outside > of the TOMCAT_HOME/webapps directory, causing all kind of problems with the > class loaders, despite the fact that all the classes are supposedly > correctly resolved. I still have that LinkageError, regardless of where I > place the classe (shared or common). > > As I said before, if all the application is placed under > TOMCAT_HOME/webapps/axis/classes, there are no exceptions thrown! > > Hope this clarifies my situation and if you have any advice, I would greatly > appreciate it. > > Thanks in advance, > -Luis R. > > HTH, >> M- >> ********************************************************************* >> >> This email message and any files transmitted with it contain confidential >> information intended only for the person(s) to whom this email message is >> addressed. If you have received this email message in error, please >> notify >> the sender immediately by telephone or email and destroy the original >> message without making a copy. Thank you. >> >> >> >> >> ----- Original Message ----- >> *From:* Luis Rivera <[EMAIL PROTECTED]> >> *To:* Raju Balugu <[EMAIL PROTECTED]> >> *Cc:* Tomcat Users List <users@tomcat.apache.org> >> *Sent:* Monday, July 24, 2006 5:18 AM >> *Subject:* Re: java.lang.LinkageError: Class soap/xsd/CompanyInfo violates >> loader constraints >> >> >> Dear Raju and Martin, >> >> First of all, thanks a lot for the replies. I do appreciate it. I am >> including the WSDL so you can take a look if you have a chance. I will post >> it over the axis lists very soon. >> >> Martin: >> 1) I don't think it is the WSDL, because as you could appreciate in the >> WSDL, it is defined. Also, if I have all the application inside >> webapps/axis/WEB-INF/classes, it works! But as soon as I take the class that >> load the JNI DLL to the common/classes or shared/classes directories, then I >> run into the trouble with the class loaders. First I noticed that the errors >> were due to classes I did not copy to the common directory (CompanyInfo), so >> I did and the error changed to what LinkageError. >> >> 2) Regarding the class loading model. I understand why it is recommended, >> but is it possible to change it? The reason I ask is because I found on the >> web an email from a guy with the same exception, but using J2EE and he said >> that by setting the delegation to true in the sun-web.xml file, the >> problem was solved!!! >> >> 3) Could you let me know which libraries are you talking about? The >> bootstrap.jar file under the TOMCAT_HOME/bin directory? >> >> Raju: >> >> I am using the common/classes, after migrating from the shared/classes >> directory, thinking that might solve the problem, but no luck. Both of those >> directories are defined for the common and shared loader respectively in the >> catalina.properties directory. Let me just try to illustrate what I am >> trying to do: >> >> CRLImpl.java: Entry point, file generated by WSDL2Java (inside >> webapps/axis/WEB-INF/classes) >> >> void getCompany(CompanyInfoHolder company, StringHolder result) >> { >> crl.nada(company, result); >> } >> >> jniCRLimpl.java: jni wrapper that will load the crl.DLL library (inside >> common/classes) >> >> void nada(CompanyInfoHolder company, StringHolder result) >> { >> company.value = new soap.xsd.CompanyInfo(); // The problem comes >> here !!! >> .... >> } >> >> This exact same code, works if all is located under >> webapps/axis/WEB-INF/classes, but as the TOMCAT documentation lets me know, >> I have to take the jniCRLimpl.java to the shared or common directory to >> prevent TOMCAT from trying to load my DLL more than once. >> >> Thanks again and in advance for any pointer you all can give me, >> --Luis R. >> >> On 7/23/06, Raju Balugu <[EMAIL PROTECTED]> wrote: >> > >> > Hi , >> > >> > How you are loading the outside(which are not there in classpath) jars >> > and classes in tomcat? try to load the outside jar and class files from the >> > catalina.properties(/conf).It may solve ur problem?please let me know >> > server configuration too. >> > >> > Regards >> > Raju >> > >> > >> > On 7/24/06, Luis Rivera < [EMAIL PROTECTED]> wrote: >> > > >> > > Dear Martin Gainty, >> > > >> > > I have posted this issue on the axis (devs and users) lists, without >> > > any >> > > luck. I really thought it was because it was a tomcat issue, so I am >> > > posting >> > > it here. The only thing I have not posted is my WSDL, which I will do, >> > > in >> > > both places. But in case I still have your attention, please let me >> > > know if >> > > you or somebody who reads this know the answer to these questions? >> > > >> > > Q1) Does this mean this is an axis isseu? >> > > >> > > Q2) Is there a way to change the class loading policy in Tomcat? (I >> > > know >> > > that delegation works under the servel model) >> > > >> > > Q3) Is it true that in Tomcat I need to place the classes that load >> > > JNI >> > > libraries outside of the webapps directory? If not, then my problem is >> > > solved. >> > > >> > > Thanks in advance, >> > > --Luis R. >> > > >> > > On 7/23/06, Martin Gainty < [EMAIL PROTECTED] > wrote: >> > > > >> > > > Luis please post this email and your WSDL to axis-user@ws.apache.org >> > > > Martin -- >> > > > >> > > ********************************************************************* >> > > > This email message and any files transmitted with it contain >> > > confidential >> > > > information intended only for the person(s) to whom this email >> > > message is >> > > > addressed. If you have received this email message in error, please >> > > >> > > > notify >> > > > the sender immediately by telephone or email and destroy the >> > > original >> > > > message without making a copy. Thank you. >> > > > >> > > > >> > > > >> > > > ----- Original Message ----- >> > > > From: "Luis Rivera" < [EMAIL PROTECTED]> >> > > > To: < users@tomcat.apache.org> >> > > > Sent: Sunday, July 23, 2006 8:03 AM >> > > > Subject: java.lang.LinkageError : Class soap/xsd/CompanyInfo >> > > violates >> > > > loader constraints >> > > > >> > > > >> > > > > HELP PLEASE, PLEASE PLEASE, >> > > > > >> > > > > Any tomcat Guru knows what can cause this exception? I need to >> > > have >> > > > some >> > > > > classes either in shared or common, outside of the webapps >> > > directory. >> > > > This >> > > > > is causing my a great headache, and only by activating the loggin >> > > in the >> > > > > webapps directory I saw the trace you will see below. I solved all >> > > the >> > > > > problems of the classloaders not finding the classes, but I don't >> > > know >> > > > how >> > > > > to solve this one. >> > > > > >> > > > > I read in another website that the problem might be the >> > > classloading >> > > > > delegation, but I don't think Tomcat has a way to change the >> > > > classloading >> > > > > delegation model. Besides, I don't believe that would solve it, >> > > because >> > > > I >> > > > > don't think the problem is that it is not finding the classes, but >> > > >> > > > something >> > > > > else ... what constraints and where are they set? I am not using a >> > > > Security >> > > > > Manager, so it is not about permissions in the catalina.policyfile. >> > > > > >> > > > > Here is the full stack trace >> > > > > >> > > > > 27782 [http-8095-Processor25] DEBUG org.apache.axis.enterprise - >> > > > Mapping >> > > > > Exception to AxisFault^M >> > > > > java.lang.reflect.InvocationTargetException^M >> > > > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native >> > > Method)^M >> > > > > at sun.reflect.NativeMethodAccessorImpl.invoke( >> > > > > NativeMethodAccessorImpl.java:39)^M >> > > > > at sun.reflect.DelegatingMethodAccessorImpl.invoke ( >> > > > > DelegatingMethodAccessorImpl.java:25)^M >> > > > > at java.lang.reflect.Method.invoke(Method.java:585)^M >> > > > > at org.apache.axis.providers.java.RPCProvider.invokeMethod( >> > > > > RPCProvider.java:397)^M >> > > > > at >> > > org.apache.axis.providers.java.RPCProvider.processMessage( >> > > > > RPCProvider.java:186)^M >> > > > > at org.apache.axis.providers.java.JavaProvider.invoke( >> > > > > JavaProvider.java:323)^M >> > > > > at org.apache.axis.strategies.InvocationStrategy.visit( >> > > > > InvocationStrategy.java:32)^M >> > > > > at >> > > > > org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)^M >> > > > > at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)^M >> > > > > at org.apache.axis.handlers.soap.SOAPService.invoke( >> > > > SOAPService.java >> > > > > :454)^M >> > > > > at org.apache.axis.server.AxisServer.invoke(AxisServer.java >> > > > :281)^M >> > > > > at org.apache.axis.transport.http.AxisServlet.doPost ( >> > > > > AxisServlet.java:699)^M >> > > > > at javax.servlet.http.HttpServlet.service (HttpServlet.java >> > > :709)^M >> > > > > at org.apache.axis.transport.http.AxisServletBase.service( >> > > > > AxisServletBase.java:327)^M >> > > > > at javax.servlet.http.HttpServlet.service (HttpServlet.java >> > > > :802)^M >> > > > > at >> > > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( >> > > > > ApplicationFilterChain.java:252)^M >> > > > > at org.apache.catalina.core.ApplicationFilterChain.doFilter( >> > > > > ApplicationFilterChain.java :173)^M >> > > > > at org.apache.catalina.core.StandardWrapperValve.invoke( >> > > > > StandardWrapperValve.java:213)^M >> > > > > at org.apache.catalina.core.StandardContextValve.invoke ( >> > > > > StandardContextValve.java:178)^M >> > > > > at org.apache.catalina.core.StandardHostValve.invoke( >> > > > > StandardHostValve.java:126)^M >> > > > > at org.apache.catalina.valves.ErrorReportValve.invoke ( >> > > > > ErrorReportValve.java:105)^M >> > > > > at org.apache.catalina.core.StandardEngineValve.invoke ( >> > > > > StandardEngineValve.java:107)^M >> > > > > at org.apache.catalina.connector.CoyoteAdapter.service ( >> > > > > CoyoteAdapter.java:148)^M >> > > > > at org.apache.coyote.http11.Http11Processor.process( >> > > > > Http11Processor.java:869)^M >> > > > > at >> > > > > >> > > > >> > > org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection >> > > > > (Http11BaseProtocol.java:664)^M >> > > > > at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket >> > > ( >> > > > > PoolTcpEndpoint.java:527)^M >> > > > > at >> > > org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt ( >> > > > > LeaderFollowerWorkerThread.java:80)^M >> > > > > at >> > > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run( >> > > > > ThreadPool.java:684)^M >> > > > > at java.lang.Thread.run ( Thread.java :595)^M >> > > > > Caused by: java.lang.LinkageError: Class soap/xsd/CompanyInfo >> > > violates >> > > > > loader constraints^M >> > > > > at java.lang.ClassLoader.defineClass1(Native Method)^M >> > > > > at java.lang.ClassLoader.defineClass (ClassLoader.java >> > > :620)^M >> > > > > at java.security.SecureClassLoader.defineClass( >> > > > > SecureClassLoader.java:124)^M >> > > > > at java.net.URLClassLoader.defineClass (URLClassLoader.java >> > > :260)^M >> > > > > at java.net.URLClassLoader.access$100 (URLClassLoader.java >> > > :56)^M >> > > > > at java.net.URLClassLoader$1.run(URLClassLoader.java:195)^M >> > > > > at java.security.AccessController.doPrivileged (Native >> > > Method)^M >> > > > > at java.net.URLClassLoader.findClass ( URLClassLoader.java >> > > :188)^M >> > > > > at java.lang.ClassLoader.loadClass(ClassLoader.java:306)^M >> > > > > at java.lang.ClassLoader.loadClass (ClassLoader.java:251)^M >> > > > > at java.lang.ClassLoader.loadClassInternal ( >> > > ClassLoader.java >> > > > :319)^M >> > > > > at vsa.jniCRLimpl.nada(jniCRLimpl.java:100)^M >> > > > > at soap.wsdl.CRLImpl.getCompany (CRLImpl.java:94)^M >> > > > > at soap.wsdl.CRLSkeleton.getCompany(Unknown Source)^M >> > > > > ... 30 more^M >> > > > > >> > > > > Thanks in advance, >> > > > > --Luis R. >> > > > > >> > > >> > > >> > >> ------------------------------ >> >> --------------------------------------------------------------------- >> To start a new topic, e-mail: users@tomcat.apache.org >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >