Just one thing I note (again, not being a java guy) but I see the SEGV on
VerifyControlRecord.  I have seen this (esp.) on Solaris on earlier versions
when you mix up the compile and run library versions.  If it's a plugin
server you're writing this is especially true and the releases must match
between the server and the app.  The control record has changed in size over
the releases.  

Check your java versions down the java paths.

Cheers
Ben

-----Original Message-----
From: Action Request System discussion list(ARSList)
[mailto:arslist@ARSLIST.ORG] On Behalf Of Axton
Sent: February-15-12 17:44
To: arslist@ARSLIST.ORG
Subject: Re: Java Plugin Server - Class conflict

Using the updated apache-commons-codec seems to cause the plugin server to
issue a call that causes arserver to crash.  Here is the stack trace from
the plugin server:

Exception in thread "job-scheduler" java.lang.NullPointerException
  at org.apache.commons.codec.binary.Base64.encode(Base64.java:380)
  at org.apache.commons.codec.binary.BaseNCodec.encode(BaseNCodec.java:340)
  at com.bmc.arsys.arencrypt.f.try(Unknown Source)
  at com.bmc.arsys.arencrypt.f.encryptData(Unknown Source)
  at com.bmc.arsys.arencrypt.PasswordEncryption.encryptPasswordEx(Unknown
Source)
  at com.bmc.arsys.arencrypt.PasswordEncryption.encryptPasswordEx(Unknown
Source)
  at com.bmc.arsys.arrpc.xdr.ArRpcPassword.setPasswordStr(Unknown Source)
  at com.bmc.arsys.api.session.g.a(Unknown Source)
  at com.bmc.arsys.api.ProxyJRpc.loadRpcControlStruct(Unknown Source)
  at com.bmc.arsys.api.ProxyJRpc.ARGetServerInfo(Unknown Source)
  at com.bmc.arsys.api.ARServerUser.getServerInfo(Unknown Source)
  at com.bmc.arsys.api.ARServerUser.getServerVersion(Unknown Source)
  at com.bmc.arsys.api.ARServerUser.getServerVersionMajor(Unknown Source)
  at com.bmc.arsys.api.ARServerUser.usePrivateRpcQueue(Unknown Source)
  at com.newyorklife.remedy.plugins.extractor.Job.run(Job.java:154)
  at java.util.TimerThread.mainLoop(Timer.java:512)
  at java.util.TimerThread.run(Timer.java:462)

Which causes arserver to crash with this stack trace:

Wed Feb 15 11:03:00 2012     11
   Timestamp: 1329321780.4503
   Thread Id: 76
   Version: 7.5.00 Patch 003 200909292346 Apr 28 2010 14:12:04
   ServerName: server
   Database: SQL -- Oracle
   Hardware: sun4u
   OS: SunOS 5.10
   RPC Id: 15000
   RPC Call: 73 (GLEWF)
   RPC Queue: 390621
   Client: User Demo from Unidentified Client (protocol 14) at IP address
1.2.3.4
   Logging On: API Escalation Filter SQL User Thread

Stacks:
^@/path/to/ARSystem/bin/arserverd:DumpStackTrace+0x110
/path/to/ARSystem/bin/arserverd:SignalTrapProc+0x228
/lib/sparcv9/libc.so.1:0xd6fdc
/lib/sparcv9/libc.so.1:0xcab70
/lib/sparcv9/libc.so.1:0xcad7c
/path/to/ARSystem/bin/arserverd:VerifyControlRecord+0x7c8 [ Signal 11
(SEGV)] /path/to/ARSystem/bin/arserverd:0x47f81c
/path/to/ARSystem/bin/arserverd:argetlistentrywithfields_14_svc+0xf4
/path/to/ARSystem/bin/arserverd:HandleRPCs+0x2c2f4
/path/to/ARSystem/bin/arserverd:WorkerThread+0xcb0
/path/to/ARSystem/bin/arserverd:RestartableThreadMain+0x88
/path/to/ARSystem/bin/arserverd:UnixThreadStartRoutine+0x17c
/lib/sparcv9/libc.so.1:0xd6eb0

Guess I'm off to re-factor this class or write my own.

Axton Grams

On Wed, Feb 15, 2012 at 10:21 AM, Axton <axton.gr...@gmail.com> wrote:
> Still the same issue with this particular class.  I see the following 
> in the plugin server logs when the plugin is initializing:
>
> Caused by: java.lang.NoSuchMethodError:
> org.apache.commons.codec.binary.Base64.decodeBase64(Ljava/lang/String;
> )[B
>  at com.xxx.remedy.plugins.extractor.Job.setPassword(Job.java:642)
>  at 
> com.xxx.remedy.plugins.extractor.Job.setFailsafeDefaults(Job.java:355)
>  at 
> com.xxx.remedy.plugins.extractor.Config.configureJobs(Config.java:56)
>  at com.xxx.remedy.plugins.extractor.Config.<init>(Config.java:30)
>  at com.xxx.remedy.plugins.Extractor.init(Extractor.java:51)
>  ... 9 more
>
> The class path is set up with the directory that contains the jar that 
> has this class first in the class path:
>
> $ pargs 23237
> 23237:  ./java -Dpname=PluginSvrMain -server -Xms128m -Xmx512m 
> -XX:PermSize=32m -XX:Max
> argv[0]: ./java
> argv[1]: -Dpname=PluginSvrMain
> argv[2]: -server
> argv[3]: -Xms128m
> argv[4]: -Xmx512m
> argv[5]: -XX:PermSize=32m
> argv[6]: -XX:MaxPermSize=32m
> argv[7]: -XX:+UseConcMarkSweepGC
> argv[8]: -XX:-UseParNewGC
> argv[9]: 
> -Djava.library.path=/path/to/lib:/path/to/pluginsvr:/path/to/ARSystem/
> bin:/path/to/api/lib
> argv[10]: -Djava.awt.headless=true
> argv[11]: -Dhttp.proxyHost=nyproxy
> argv[12]: -Dhttp.proxyPort=80
> argv[13]: -Djava.security.policy=/path/to/jmx/server.policy
> argv[14]: -Dcom.sun.management.jmxremote
> argv[15]: -Dcom.sun.management.jmxremote.ssl=false
> argv[16]: 
> -Dcom.sun.management.jmxremote.access.file=/path/to/jmx/jmxremote.acce
> ss
> argv[17]: -Dcom.sun.management.jmxremote.local.only=false
> argv[18]: -Dcom.sun.management.jmxremote.port=1234
> argv[19]: 
> -Dcom.sun.management.jmxremote.password.file=/path/to/jmx/password.pro
> perties
> argv[20]: -Dlog4j.configuration=/path/to/pluginsvr/log4j_pluginsvr.xml
> argv[21]: -classpath
> argv[22]: 
> /path/to/lib:/path/to/pluginsvr:/path/to/pluginsvr/arpluginsvr75.jar
> argv[23]: com.bmc.arsys.pluginsvr.ARPluginServerMain
> argv[24]: -x
> argv[25]: server
> argv[26]: -i
> argv[27]: /path/to/ARSystem
>
> The jar in /path/to/lib is commons-codec-1.6.jar.  This file contains 
> the class that has the referenced method:
>
> $ jar -tvf /path/to/lib/commons-codec-1.6.jar |grep
> Base64
>  8314 Fri Dec 02 21:37:14 EST 2011 
> org/apache/commons/codec/binary/Base64.class
>   929 Fri Dec 02 21:37:14 EST 2011
> org/apache/commons/codec/binary/Base64InputStream.class
>   939 Fri Dec 02 21:37:14 EST 2011
> org/apache/commons/codec/binary/Base64OutputStream.class
>
> I think the problem is that the main jar (arpluginsvr75.jar) also 
> contains this particular class:
>
> $ jar -tvf /path/to/ARSystem/pluginsvr/arpluginsvr75.jar |grep Base64
>  5468 Sat Jul 10 16:13:00 EDT 2004 
> org/apache/commons/codec/binary/Base64.class
>
> So that even though the jar file that contains the desired class comes 
> first in the classpath, the classloader is loading the classes from 
> the main jar (arpluginsvr75.jar) first.  This has to do with the way 
> the plugin server initializes, such that it uses it's bundled 
> org/apache/commons/codec/binary/Base64.class over the one that comes 
> first in the classpath.
>
> I changed the classpath to reference the jar instead of the path to 
> the jar and this seems to have fixed the issue.  I used the -verbose 
> option for the JRE to see where it was being loaded from and now I see 
> the following:
>
> [Loaded org.apache.commons.codec.binary.Base64 from 
> file:/path/to/lib/commons-codec-1.6.jar]
>
> Thanks for the pointers.
>
> We will see if this breaks anything in the plugin server.  Maybe it 
> just be easier to write my own class to base64 encode/decode.
>
> Axton Grams
>
> On Tue, Feb 14, 2012 at 3:44 PM, LJ LongWing <lj.longw...@gmail.com>
wrote:
>> Axton,
>> I have experienced that if you have the same classes in multiple jar 
>> files, that it uses the one that's in the classpath first, first.  
>> So...if you add the newer versions of the classes in your jar first, 
>> then the plugin server jar file, that I believe it should use the new
ones before the old ones.
>>
>> -----Original Message-----
>> From: Action Request System discussion list(ARSList) 
>> [mailto:arslist@ARSLIST.ORG] On Behalf Of Axton
>> Sent: Tuesday, February 14, 2012 2:22 PM
>> To: arslist@ARSLIST.ORG
>> Subject: Java Plugin Server - Class conflict
>>
>> I am trying to use Apache Commons Codec 1.6 in a plugin I am writing.
>> The plugin server jar contains these classes, though an old version 
>> (too old to do what I would like to do):
>>
>> $ jar -tvf arpluginsvr75.jar |grep 'org/apache/commons/codec/'
>>     0 Sun Sep 20 09:23:16 EDT 2009 org/apache/commons/codec/
>>     0 Sun Sep 20 09:23:16 EDT 2009 org/apache/commons/codec/binary/
>>     0 Sun Sep 20 09:23:16 EDT 2009 org/apache/commons/codec/digest/
>>     0 Sun Sep 20 09:23:16 EDT 2009 org/apache/commons/codec/language/
>>     0 Sun Sep 20 09:23:16 EDT 2009 org/apache/commons/codec/net/
>>   268 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/BinaryDecoder.class
>>   268 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/BinaryEncoder.class
>>   248 Sat Jul 10 16:13:00 EDT 2004 
>> org/apache/commons/codec/Decoder.class
>>   391 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/DecoderException.class
>>   248 Sat Jul 10 16:13:00 EDT 2004 
>> org/apache/commons/codec/Encoder.class
>>   391 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/EncoderException.class
>>   300 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/StringDecoder.class
>>   300 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/StringEncoder.class
>>  1190 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/StringEncoderComparator.class
>>  5468 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/binary/Base64.class
>>  2969 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/binary/BinaryCodec.class
>>  2624 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/binary/Hex.class
>>   704 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/binary/package.html
>>  1860 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/digest/DigestUtils.class
>>   708 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/digest/package.html
>>  2470 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/language/DoubleMetaphone$DoubleMetaphoneResu
>> lt.clas
>> s
>>  14791 Sat Jul 10 16:13:00 EDT 2004
>> org/apache/commons/codec/language/DoubleMetaphone.class
>>  5050 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/language/Metaphone.class
>>  2349 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/language/RefinedSoundex.class
>>  3286 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/language/Soundex.class
>>  1583 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/language/SoundexUtils.class
>>   674 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/language/package.html
>>  2661 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/net/BCodec.class
>>  4052 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/net/QCodec.class
>>  4511 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/net/QuotedPrintableCodec.class
>>  2435 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/net/RFC1522Codec.class
>>   252 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/net/StringEncodings.class
>>  4432 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/net/URLCodec.class
>>   696 Sat Jul 10 16:13:02 EDT 2004
>> org/apache/commons/codec/net/package.html
>>  1022 Sat Jul 10 16:13:02 EDT 2004 
>> org/apache/commons/codec/overview.html
>>  3283 Sat Jul 10 16:13:02 EDT 2004 
>> org/apache/commons/codec/package.html
>>
>> The problem is that the plugin resolves and uses the classes in the 
>> plugin server jar file, not the jar file I have referenced in my 
>> plugin server configuration:
>>
>>    <plugin>
>>      <name>ARF.PLUGIN</name>
>>      <type>FilterAPI</type>
>>      <code>JAVA</code>
>>      <filename>/path/to/plugin.jar</filename>
>>      <classname>com.newyorklife.remedy.plugins.Extractor</classname>
>>      <pathelement type="location">/path/to/javacsv.jar</pathelement>
>>      <pathelement
>> type="location">/path/to/commons-codec-1.6.jar</pathelement>
>>      <pathelement type="location">/path/to/mail.jar</pathelement>
>>      <pathelement
>> type="location">/path/to/commons-lang3-3.1.jar</pathelement>
>>      <userDefined>
>>        <configfile>/path/to/config.properties</configfile>
>>      </userDefined>
>>    </plugin>
>>
>> Any ideas on how I can change the behavior of the classloader?  Do I 
>> need to use something like java.lang.classloader?
>>
>> Thanks,
>> Axton Grams
>>
>> _____________________________________________________________________
>> _______
>> ___
>> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend 
>> wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"
>>
>> _____________________________________________________________________
>> __________ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org 
>> attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"

____________________________________________________________________________
___
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12
www.wwrug12.com ARSList: "Where the Answers Are"

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"

Reply via email to