Re: [Tomcat] -Classpath ordering issue
Re: [Tomcat] -Classpath ordering issue
- Subject: Re: [Tomcat] -Classpath ordering issue
- From: Dev WO via Webobjects-dev <email@hidden>
- Date: Wed, 29 Jan 2020 18:57:07 +0100
So far not good,
I’m trying to use the VirtualWebappLoader as below, but I’m not even sure my
syntax is ok (and can’t find anything in the log relevant to this).
I “know” it doesn’t work as even with JavaWebObjects lib as the first one, the
app still work on machine #2 (I would have expected a NoSuchMethodError
exception)
I’ve also found jarjar (https://code.google.com/archive/p/jarjar/
<https://code.google.com/archive/p/jarjar/>) maybe creating a single jar with
all of them inside might work, but I’m not sure how to use and to set an order
for the jar…
Any pointer or sample code related to this lib ordering problem?
Thanks,
Xavier
> On 29 Jan 2020, at 09:50, Dev WO <email@hidden> wrote:
>
> Hi Konrad,
>
> Thanks for the description of the issue.
> I’m looking into it right now.
>
> It looks like there’s a VirtualWebappLoader already included in Tomcat, so do
> I need to build my own or can I just declare it in the context.xml file in
> my_app/WEB-INF/?
> I’m surprised building the app doesn’t generate that context.xml file at the
> same time, it would make sense.
>
> I’m pretty confuse with the context.xml file, should it be something like
>
> <Context docBase="\webapps\CloudManager">
> <Loader className="org.apache.catalina.loader.VirtualWebappLoader"/>
> <lib>ERCoolComponents</lib>
> <lib>AjaxLook</lib>
> ...
> </context>
>
> Just to be precise, there’s only one app deployed on this Tomcat instance.
>
> Thanks and have a nice day,
>
> Xavier
>
>> On 29 Jan 2020, at 08:44, Konrad Kubacki via Webobjects-dev
>> <email@hidden <mailto:email@hidden>>
>> wrote:
>>
>> Problem You are facing is probably caused by order of jars loading.
>> Tomcat >= 8 does it in random way (up to version 7.5.x it was alphabetical).
>> It is important, that classloader loads wonder "redefined" classes for some
>> of WO, instead of original.
>>
>> Solution:
>> You may want to write your own tomcat class loader, basing on WO classpath
>> file, or just loading jars in alphabetical order.
>> Then You can activate it on tomcat's level in
>> ${CATALINA_BASE}/conf/context.xml or for your app only in
>> webapp/META-INF/context.xml. For details see tomcat's documentation.
>>
>> If it's not the case, You may also check if on this beta-test tomcat(#4)
>> there is not other WO app deployed, which loads original WO classess, before
>> Your's app start. And/or check if they fully restart it between deployments
>> o new version.
>>
>>
>>
>> W dniu 28.01.2020 o 19:35, Dev WO via Webobjects-dev pisze:
>>> Hi WOers,
>>>
>>> I’m starting to lost my mind with a Tomcat deployment (not my choice)
>>>
>>> I have 4 machines:
>>> 1-Dev machine running through Eclipse and Apache (OS X) => Everything works
>>> 2-Test Tomcat deployment machine (OS X / Tomcat 9.0.29) => Everything works
>>> 3-Another test Tomcat deployment (Debian / Tomcat 9.0.20) => Everything
>>> works
>>> 4-Customer “beta test" machine (Debian / Tomcat 9.0.20) => Some part of the
>>> app doesn’t work
>>>
>>> Of course machine #4 is the one I have the least access…
>>>
>>> By "Some part of the app doesn’t work” I mean that I have some asynchronous
>>> thread that do their job, I have some HTML interfaces that works, but other
>>> don’t...
>>> After way too much trial, I was able to get basically the same errors on my
>>> dev machine by changing the class path (moving down ERExtensions frameworks
>>> in the classpath). Finally getting errors like:
>>>
>>> NoSuchMethodError:
>>> com.webobjects.foundation.NSArray.<init>(Ljava/lang/Object;[Ljava/lang/Object;)V
>>> and
>>> NoSuchMethodError:
>>> com.webobjects.appserver.WOCookie.<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZZ)V
>>>
>>> After reading every thread about Tomcat from the mailing list from 2004 up
>>> to today, I still don’t get the issue.
>>> I’m using the exact same .war file on all machines, with the web.xml
>>> relevant part (when framework order is correct) at the end of the message.
>>>
>>> I have no clue and no idea regarding how to find the issue on this machine
>>> #4.
>>>
>>> I’m using Wonder7 and WO5.4, the Application class extends ERXApplication
>>> (having JavaWOJSPServlet in the build path or not doesn’t change the fact
>>> it works on machine 1,2 and 3 but not 4)
>>>
>>> Thanks for your help,
>>>
>>> Xavier
>>>
>>>
>>>
>>> <context-param>
>>> <param-name>WOClasspath</param-name>
>>> <param-value>
>>> WEBINFROOT/Resources/Java/
>>> WEBINFROOT/CloudManager.woa/Contents/Resources/Java/cloudmanager.jar
>>> WEBINFROOT/Resources/Java/gson-2.5.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERCoolComponents.framework/Resources/Java/ERCoolComponents.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/AjaxLook.framework/Resources/Java/AjaxLook.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/Ajax.framework/Resources/Java/Ajax.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/Ajax.framework/Resources/Java/jabsorb-1.2.2.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/CloudManagerDataModel.framework/Resources/Java/cloudmanagerdatamodel.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/CloudManagerDataModel.framework/Resources/Java/postgresql-8.3-603.jdbc3.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERExtensions.framework/Resources/Java/ERExtensions.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/ERJars.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/ERFoundation.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/ERWebObjects.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/commons-cli-1.3.1.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/commons-codec-1.10.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/commons-io-2.5.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/commons-lang-2.6.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/commons-lang3-3.5.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/commons-logging-1.2.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/fluent-hc-4.5.3.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/httpclient-4.5.3.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/httpclient-cache-4.5.3.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/httpcore-4.4.6.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/httpmime-4.5.3.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/icu4j-3_8_1.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/javassist-3.20.0-GA.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/joda-time-2.9.7.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/junit-4.12.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/log4j-1.2.17.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/ognl-3.2.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/slf4j-api-1.7.23.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERJars.framework/Resources/Java/slf4j-log4j12-1.7.23.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/PostgresqlPlugIn.framework/Resources/Java/PostgresqlPlugIn.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaMemoryAdaptor.framework/Resources/Java/JavaMemoryAdaptor.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/ERPrototypes.framework/Resources/Java/ERPrototypes.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/WOOgnl.framework/Resources/Java/WOOgnl.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaWOExtensions.framework/Resources/Java/JavaWOExtensions.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaEOAccess.framework/Resources/Java/javaeoaccess.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaEOAccess.framework/WebServerResources/Java/JavaEOAccess.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaEOControl.framework/Resources/Java/javaeocontrol.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaEOControl.framework/WebServerResources/Java/JavaEOControl.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaFoundation.framework/Resources/Java/javafoundation.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaFoundation.framework/WebServerResources/Java/JavaFoundation.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaJDBCAdaptor.framework/Resources/Java/javajdbcadaptor.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaJDBCAdaptor.framework/WebServerResources/Java/JavaJDBCAdaptor.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaWebObjects.framework/Resources/Java/javawebobjects.jar
>>> WEBINFROOT/CloudManager.woa/Contents/Frameworks/JavaWebObjects.framework/WebServerResources/Java/JavaWebObjects.jar
>>> </param-value>
>>> </context-param>
>>>
>>>
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list (email@hidden
>>> <mailto:email@hidden>)
>>> Help/Unsubscribe/Update your Subscription:
>>>
>>>
>>> This email sent to email@hidden <mailto:email@hidden>
>> --
>> Konrad Kubacki
>> Starszy Programista - Lider Zespołu Programistów ifirma.pl
>>
>> IFIRMA SA
>> ul. Grabiszyńska 241 B
>> 53-234 Wrocław
>> tel.: +48 71 769 43 00
>> faks: +48 71 321 00 16
>>
>> https://www.ifirma.pl <https://www.ifirma.pl/>
>>
>> Sąd Rejonowy dla Wrocławia-Fabrycznej
>> VI Wydział Gospodarczy - Krajowego Rejestru Sądowego
>> KRS: 0000281947
>> NIP: PL-898-16-47-572
>> Kapitał 640 000 zł w pełni opłacony
>>
>> Ochrona Danych Osobowych
>> https://www.ifirma.pl/polityka-prywatnosci-i-ochrona-danych-osobowych
>> <https://www.ifirma.pl/polityka-prywatnosci-i-ochrona-danych-osobowych>_______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list (email@hidden
>> <mailto:email@hidden>)
>> Help/Unsubscribe/Update your Subscription:
>>
>>
>> This email sent to email@hidden
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden