2012/6/18 James Lampert <jam...@touchtonecorp.com>:
> We're attempting to bring up apache-tomcat-7.0.25.zip on a customer's
> AS/400, the same as we've done on several other AS/400s (including our own),
> and it's not working.
>
> In catalina.out, I'm seeing this:
>
>> Jun 18, 2012 11:36:23 AM org.apache.catalina.core.AprLifecycleListener
>> init                                                         INFO: The APR
>> based Apache Tomcat Native library which allows optimal performance in
>> production environments was not found on the java.library.path:
>> /QSYS.LIB/QSHELL.LIB:/QSYS.LIB/LTL38.LIB:/QSYS.LIB/ERBLIB.LIB:/QSYS.LIB/ERBQGPL.LIB:/QSYS.LIB/SEQUEL.LIB:/QSYS.LIB/SEQUELWI.LIB:/QSYS.LIB/SEQUELEX.LIB:/QSYS.LIB/ESEND.LIB:/QSYS.LIB/QTEMP.LIB:/QSYS.LIB/QGPL.LIB:/QSYS.LIB/QRPG.LIB:/QSYS.LIB/QIDU.LIB:/QSYS.LIB/TAATOOL.LIB:/QSYS.LIB/ALKWIN.LIB:/QSYS.LIB/OMNISITE.LIB:/QSYS.LIB/OMNIFIXES.LIB:/QSYS.LIB/OMNITRACS.LIB:/QSYS.LIB/OMNIDATA.LIB:/QSYS.LIB/OMNINATL.LIB:/QSYS.LIB/LIBEXPAT.LIB:/QSYS.LIB/LIBFTP.LIB:/QSYS.LIB/ACCLIB.LIB

[[[
> Caused by: java.lang.ArrayStoreException
> at java.lang.Throwable.<init>(Throwable.java:181)
> at java.lang.Exception.<init>(Exception.java:29)
> at java.lang.RuntimeException.<init>(RuntimeException.java:32)
> at java.lang.RuntimeException.<init>(RuntimeException.java:32)
> at java.lang.ArrayStoreException.<init>(ArrayStoreException.java:29)
> at java.util.Arrays.copyOf(Arrays.java:2883)
> at java.lang.StringCoding.encode(StringCoding.java:277)
> at java.lang.String.getBytes(String.java:1691)
> at org.apache.catalina.util.RequestUtil.URLDecode(RequestUtil.java:254)
> at org.apache.catalina.util.RequestUtil.URLDecode(RequestUtil.java:231)
> at org.apache.catalina.util.RequestUtil.URLDecode(RequestUtil.java:216)
> at 
> org.apache.catalina.deploy.SecurityCollection.addPattern(SecurityCollection.java:229)
>   ]]]

The exception that I cited from your log fragment is just crazy.
The code in RequestUtil.URLDecode(RequestUtil.java:254) in 7.0.25 is:

   bytes = str.getBytes(Charset.defaultCharset());

The String.getBytes(Charset) call, where all parameters are standard
classes, provided by JRE.  Yet this standard method fails in a crazy
way ("java.lang.ArrayStoreException". It means types mismatch
encountered when putting a new element into array).

Your JRE is broken.

Try running a simple java program that calls the above method and see
what happens.

Just guessing at straws: you may try to simplify your environment (do
you need all that libraries as mentioned in  java.library.path?  what
is your default charset?)

I wonder whether you have several copies of JRE classes loaded by
different classloaders.

Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to