java.io.StreamCorruptedException in simple security example
kyle.d.duncan Jan 5, 2006 9:23 AMI am attempting to run the 'simple' xws-security example of JWSDP 1.6 using JBoss 4.0.2 and J2SDK 1.4.2. My JCE provider is de.cscc.crypto.provider from http://www.jhbci.de. (I tried several other JCE providers and got the same results).
I have placed several of the JWSDP's endorsed jars in JBoss's lib/endorsed directory to avoid ClassDefNotFound errors.
When deploying the securesimple.war, the following code triggers a StreamCorruptedException:
symmKeyStore = KeyStore.getInstance(symmKeyStoreType); FileInputStream fis = new FileInputStream(symmKeyStoreURL); // the next line is where the exception occurs symmKeyStore.load(fis, symmKeyStorePassword.toCharArray());
The stack trace is as follows, and occurs as the war is being deployed:
08:25:11,556 INFO [TomcatDeployer] deploy, ctxPath=/securesimple, warUrl=file:/
D:/jboss-wssecure/server/hspd12/tmp/deploy/tmp3384securesimple-exp.war/
08:25:11,728 INFO [STDOUT] Jan 5, 2006 8:25:11 AM com.sun.xml.rpc.server.http.J
AXRPCContextListener contextInitialized
INFO: JAXRPCSERVLET12: JAX-RPC context listener initializing
08:25:12,181 INFO [STDOUT] java.io.IOException: java.io.StreamCorruptedExceptio
n invalid stream header
08:25:12,181 INFO [STDOUT] at sample.SecurityEnvironmentHandler.initSymmKey
Store(SecurityEnvironmentHandler.java:316)
08:25:12,181 INFO [STDOUT] at sample.SecurityEnvironmentHandler.(Secu
rityEnvironmentHandler.java:124)
08:25:12,181 INFO [STDOUT] at sun.reflect.NativeConstructorAccessorImpl.new
Instance0(Native Method)
08:25:12,181 INFO [STDOUT] at sun.reflect.NativeConstructorAccessorImpl.new
Instance(NativeConstructorAccessorImpl.java:39)
08:25:12,181 INFO [STDOUT] at sun.reflect.DelegatingConstructorAccessorImpl
.newInstance(DelegatingConstructorAccessorImpl.java:27)
08:25:12,181 INFO [STDOUT] at java.lang.reflect.Constructor.newInstance(Con
structor.java:274)
08:25:12,181 INFO [STDOUT] at java.lang.Class.newInstance0(Class.java:308)
08:25:12,181 INFO [STDOUT] at java.lang.Class.newInstance(Class.java:261)
08:25:12,181 INFO [STDOUT] at com.sun.xml.rpc.security.SecurityPluginUtil.<
init>(SecurityPluginUtil.java:92)
08:25:12,181 INFO [STDOUT] at simple.PingPort_Ping_Tie.(PingPort_Pi
ng_Tie.java:36)
08:25:12,181 INFO [STDOUT] at java.lang.Class.forName0(Native Method)
08:25:12,181 INFO [STDOUT] at java.lang.Class.forName(Class.java:219)
08:25:12,181 INFO [STDOUT] at com.sun.xml.rpc.server.http.JAXRPCRuntimeInfo
Parser.loadClass(JAXRPCRuntimeInfoParser.java:189)
08:25:12,181 INFO [STDOUT] at com.sun.xml.rpc.server.http.JAXRPCRuntimeInfo
Parser.parseEndpoints(JAXRPCRuntimeInfoParser.java:73)
08:25:12,181 INFO [STDOUT] at com.sun.xml.rpc.server.http.JAXRPCRuntimeInfo
Parser.parse(JAXRPCRuntimeInfoParser.java:39)
08:25:12,181 INFO [STDOUT] at com.sun.xml.rpc.server.http.JAXRPCServlet.ini
t(JAXRPCServlet.java:51)
08:25:12,181 INFO [STDOUT] at org.apache.catalina.core.StandardWrapper.load
Servlet(StandardWrapper.java:1091)
08:25:12,181 INFO [STDOUT] at org.apache.catalina.core.StandardWrapper.load
(StandardWrapper.java:925)
08:25:12,181 INFO [STDOUT] at org.apache.catalina.core.StandardContext.load
OnStartup(StandardContext.java:3857)
08:25:12,181 INFO [STDOUT] at org.apache.catalina.core.StandardContext.star
t(StandardContext.java:4118)
08:25:12,181 INFO [STDOUT] at org.apache.catalina.core.ContainerBase.addChi
ldInternal(ContainerBase.java:759)
08:25:12,181 INFO [STDOUT] at org.apache.catalina.core.ContainerBase.addChi
ld(ContainerBase.java:739)
08:25:12,181 INFO [STDOUT] at org.apache.catalina.core.StandardHost.addChil
d(StandardHost.java:524)
08:25:12,181 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(
Native Method)
08:25:12,181 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke(N
ativeMethodAccessorImpl.java:39)
08:25:12,181 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invo
ke(DelegatingMethodAccessorImpl.java:25)
08:25:12,181 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:3
24)
08:25:12,181 INFO [STDOUT] at org.apache.commons.modeler.BaseModelMBean.inv
oke(BaseModelMBean.java:503)
08:25:12,181 INFO [STDOUT] at org.jboss.mx.server.RawDynamicInvoker.invoke(
RawDynamicInvoker.java:150)
08:25:12,181 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MB
eanServerImpl.java:644)
08:25:12,181 INFO [STDOUT] at org.apache.catalina.core.StandardContext.init
(StandardContext.java:5005)
08:25:12,181 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(
Native Method)
08:25:12,181 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke(N
ativeMethodAccessorImpl.java:39)
08:25:12,181 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invo
ke(DelegatingMethodAccessorImpl.java:25)
08:25:12,181 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:3
24)
08:25:12,181 INFO [STDOUT] at org.apache.commons.modeler.BaseModelMBean.inv
oke(BaseModelMBean.java:503)
08:25:12,181 INFO [STDOUT] at org.jboss.mx.server.RawDynamicInvoker.invoke(
RawDynamicInvoker.java:150)
08:25:12,181 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MB
eanServerImpl.java:644)
08:25:12,181 INFO [STDOUT] at org.jboss.web.tomcat.tc5.TomcatDeployer.perfo
rmDeployInternal(TomcatDeployer.java:274)
08:25:12,181 INFO [STDOUT] at org.jboss.web.tomcat.tc5.TomcatDeployer.perfo
rmDeploy(TomcatDeployer.java:91)
08:25:12,181 INFO [STDOUT] at org.jboss.web.AbstractWebDeployer.start(Abstr
actWebDeployer.java:357)
08:25:12,181 INFO [STDOUT] at org.jboss.web.WebModule.startModule(WebModule
.java:68)
08:25:12,181 INFO [STDOUT] at org.jboss.web.WebModule.startService(WebModul
e.java:46)
08:25:12,181 INFO [STDOUT] at org.jboss.system.ServiceMBeanSupport.jbossInt
ernalStart(ServiceMBeanSupport.java:272)
08:25:12,181 INFO [STDOUT] at org.jboss.system.ServiceMBeanSupport.jbossInt
ernalLifecycle(ServiceMBeanSupport.java:222)
08:25:12,181 INFO [STDOUT] at sun.reflect.GeneratedMethodAccessor4.invoke(U
nknown Source)
08:25:12,181 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invo
ke(DelegatingMethodAccessorImpl.java:25)
08:25:12,181 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:3
24)
08:25:12,181 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.
invoke(ReflectedDispatcher.java:141)
08:25:12,181 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invoc
ation.java:80)
08:25:12,181 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocat
ion.java:72)
08:25:12,181 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invo
ke(AbstractMBeanInvoker.java:249)
08:25:12,181 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MB
eanServerImpl.java:644)
08:25:12,181 INFO [STDOUT] at org.jboss.system.ServiceController$ServicePro
xy.invoke(ServiceController.java:897)
08:25:12,181 INFO [STDOUT] at $Proxy0.start(Unknown Source)
08:25:12,181 INFO [STDOUT] at org.jboss.system.ServiceController.start(Serv
iceController.java:418)
08:25:12,181 INFO [STDOUT] at sun.reflect.GeneratedMethodAccessor11.invoke(
Unknown Source)
08:25:12,181 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invo
ke(DelegatingMethodAccessorImpl.java:25)
08:25:12,197 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:3
24)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.
invoke(ReflectedDispatcher.java:141)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invoc
ation.java:80)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocat
ion.java:72)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invo
ke(AbstractMBeanInvoker.java:249)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MB
eanServerImpl.java:644)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanP
roxyExt.java:177)
08:25:12,197 INFO [STDOUT] at $Proxy27.start(Unknown Source)
08:25:12,197 INFO [STDOUT] at org.jboss.web.AbstractWebContainer.start(Abst
ractWebContainer.java:394)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.MainDeployer.start(MainD
eployer.java:964)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.MainDeployer.deploy(Main
Deployer.java:775)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.MainDeployer.deploy(Main
Deployer.java:738)
08:25:12,197 INFO [STDOUT] at sun.reflect.GeneratedMethodAccessor40.invoke(
Unknown Source)
08:25:12,197 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invo
ke(DelegatingMethodAccessorImpl.java:25)
08:25:12,197 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:3
24)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.
invoke(ReflectedDispatcher.java:141)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invoc
ation.java:80)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.interceptor.AbstractInterceptor.
invoke(AbstractInterceptor.java:121)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocat
ion.java:74)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.interceptor.ModelMBeanOperationI
nterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocat
ion.java:74)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invo
ke(AbstractMBeanInvoker.java:249)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MB
eanServerImpl.java:644)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanP
roxyExt.java:177)
08:25:12,197 INFO [STDOUT] at $Proxy8.deploy(Unknown Source)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.scanner.URLDeploymentSca
nner.deploy(URLDeploymentScanner.java:325)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.scanner.URLDeploymentSca
nner.scan(URLDeploymentScanner.java:501)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.scanner.AbstractDeployme
ntScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:204)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.scanner.AbstractDeployme
ntScanner.startService(AbstractDeploymentScanner.java:277)
08:25:12,197 INFO [STDOUT] at org.jboss.system.ServiceMBeanSupport.jbossInt
ernalStart(ServiceMBeanSupport.java:272)
08:25:12,197 INFO [STDOUT] at org.jboss.system.ServiceMBeanSupport.jbossInt
ernalLifecycle(ServiceMBeanSupport.java:222)
08:25:12,197 INFO [STDOUT] at sun.reflect.GeneratedMethodAccessor4.invoke(U
nknown Source)
08:25:12,197 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invo
ke(DelegatingMethodAccessorImpl.java:25)
08:25:12,197 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:3
24)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.
invoke(ReflectedDispatcher.java:141)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invoc
ation.java:80)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocat
ion.java:72)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invo
ke(AbstractMBeanInvoker.java:249)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MB
eanServerImpl.java:644)
08:25:12,197 INFO [STDOUT] at org.jboss.system.ServiceController$ServicePro
xy.invoke(ServiceController.java:897)
08:25:12,197 INFO [STDOUT] at $Proxy0.start(Unknown Source)
08:25:12,197 INFO [STDOUT] at org.jboss.system.ServiceController.start(Serv
iceController.java:418)
08:25:12,197 INFO [STDOUT] at sun.reflect.GeneratedMethodAccessor11.invoke(
Unknown Source)
08:25:12,197 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invo
ke(DelegatingMethodAccessorImpl.java:25)
08:25:12,197 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:3
24)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.
invoke(ReflectedDispatcher.java:141)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invoc
ation.java:80)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocat
ion.java:72)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invo
ke(AbstractMBeanInvoker.java:249)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MB
eanServerImpl.java:644)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanP
roxyExt.java:177)
08:25:12,197 INFO [STDOUT] at $Proxy4.start(Unknown Source)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.SARDeployer.start(SARDep
loyer.java:273)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.MainDeployer.start(MainD
eployer.java:964)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.MainDeployer.deploy(Main
Deployer.java:775)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.MainDeployer.deploy(Main
Deployer.java:738)
08:25:12,197 INFO [STDOUT] at org.jboss.deployment.MainDeployer.deploy(Main
Deployer.java:722)
08:25:12,197 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(
Native Method)
08:25:12,197 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke(N
ativeMethodAccessorImpl.java:39)
08:25:12,197 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invo
ke(DelegatingMethodAccessorImpl.java:25)
08:25:12,197 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:3
24)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.interceptor.ReflectedDispatcher.
invoke(ReflectedDispatcher.java:141)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.dispatch(Invoc
ation.java:80)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.interceptor.AbstractInterceptor.
invoke(AbstractInterceptor.java:121)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocat
ion.java:74)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.interceptor.ModelMBeanOperationI
nterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.Invocation.invoke(Invocat
ion.java:74)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.AbstractMBeanInvoker.invo
ke(AbstractMBeanInvoker.java:249)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.server.MBeanServerImpl.invoke(MB
eanServerImpl.java:644)
08:25:12,197 INFO [STDOUT] at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanP
roxyExt.java:177)
08:25:12,197 INFO [STDOUT] at $Proxy5.deploy(Unknown Source)
08:25:12,197 INFO [STDOUT] at org.jboss.system.server.ServerImpl.doStart(Se
rverImpl.java:434)
08:25:12,197 INFO [STDOUT] at org.jboss.system.server.ServerImpl.start(Serv
erImpl.java:315)
08:25:12,197 INFO [STDOUT] at org.jboss.Main.boot(Main.java:195)
08:25:12,197 INFO [STDOUT] at org.jboss.Main$1.run(Main.java:463)
08:25:12,197 INFO [STDOUT] at java.lang.Thread.run(Thread.java:534)
// several other exceptions follow
I can verify that the file being loaded, server-symmkeystore.jceks, is being found. I assume the cause of the exception is somewhere in my configuration and is not that there's anything wrong with server-symmkeystore.jceks. I've read elsewhere online that classloading issues can cause this type of exception, but I did not learn anything I could apply to my situation directly.
I tried to simplify the situation by writing a small test program that executes only the few offending lines of code and that could be run standalone, and got the same exception. The program is as follows:
package simple;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.KeyStore;
public class TestLoadKeyStore {
private String symmKeyStoreURL;
private String symmKeyStorePassword;
private String symmKeyStoreType;
private KeyStore symmKeyStore;
public TestLoadKeyStore() {
symmKeyStoreType = "JCEKS";
symmKeyStorePassword = "changeit";
symmKeyStoreURL = "d:/jwsdp1_6/xws-security/etc/server-symmkeystore.jceks";
}
public static void main(String[] args) {
TestLoadKeyStore tlks = new TestLoadKeyStore();
try {
tlks.initSymmKeyStore();
}
catch (Exception e) {
System.out.println(e.getClass().getName()+":"+
e.getMessage());
e.printStackTrace();
}
}
private void initSymmKeyStore() throws IOException {
try {
symmKeyStore = KeyStore.getInstance(symmKeyStoreType);
FileInputStream fis = new FileInputStream(symmKeyStoreURL);
symmKeyStore.load(fis, symmKeyStorePassword.toCharArray());
} catch (Exception e) {
throw new IOException(e.getClass().getName() + " " + e.getMessage()/* kdd + " " + symmKeyStoreURL + " " + symmKeyStorePassword */);
}
}
}
I ran the sample program by executing this ant target from within the build script provided by JWSDP for the simple example:
<target name="run-test"
depends="clean, prepare, build-client"
description="Runs the example client">
<echo message="Running the simple.TestLoadKeyStore program...."/>
<java fork="on" classname="simple.TestLoadKeyStore">
<sysproperty key="java.endorsed.dirs" value="${java.endorsed.dir}"/>
<sysproperty key="http.proxyHost" value="${http.proxyHost}"/>
<sysproperty key="http.proxyPort" value="${http.proxyPort}"/>
<sysproperty key="endpoint.host" value="${endpoint.host}"/>
<sysproperty key="endpoint.port" value="${endpoint.port}"/>
<sysproperty key="service.url" value="${service.url}"/>
<sysproperty key="jwsdp.home" value="${jwsdp.home}"/>
<classpath>
<pathelement location="${build.home}/client"/>
<fileset dir="${build.home}/client">
<include name="secenv-handler.jar"/>
</fileset>
<path refid="app.classpath"/>
</classpath>
</java>
</target>
Since here the jars in the classpath are exactly those provided by JWSDP and the ant target was almost directly copied from the target meant to run the sample application, I hoped I had eliminated any discrepancies between my enviroment and that in which the code is intended to run. Unfortunately since the problem still occurs, I don't know what else could be wrong.
Any help would be much appreciated. I've wasted many hours looking for a fix for this but haven't had much luck finding related information.
-Kyle