Recently I had to develop custom file resource adapter for the needs of the company I work in. Upon installation in test environment we faced some issues that we were not able to resolve.
After examination of the log file I found the following error: weblogic.application.ModuleException: java.lang.IllegalStateException: zip file closed
and some chunks of the stack trace:
+####<2012-10-15 14:05:59 EEST> <Warning> <Deployer> <DELTA02H> <AdminServer2> <[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1350299159313> <BEA-149078> <Stack trace for message 149004+ weblogic.application.ModuleException: java.lang.IllegalStateException: zip file closed
+ at weblogic.connector.deploy.ConnectorModule.prepare(ConnectorModule.java:239)+
+ at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)+
+ at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:387)+
+ at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)+
+ at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)+
+ at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)+ java.lang.IllegalStateException: zip file closed
+ at java.util.zip.ZipFile.ensureOpen(ZipFile.java:408)+
+ at java.util.zip.ZipFile.getEntry(ZipFile.java:149)+
+ at java.util.jar.JarFile.getEntry(JarFile.java:256)+
+ at weblogic.utils.jars.JarFileDelegate.getEntry(JarFileDelegate.java:110)+
+ at weblogic.connector.deploy.RAClassFinder.findClassInJar(RAClassFinder.java:158)+
+ at weblogic.connector.deploy.RAClassFinder.getSources(RAClassFinder.java:277)+
+ at weblogic.utils.classloaders.MultiClassFinder.getSources(MultiClassFinder.java:77)+
+ at weblogic.utils.classloaders.CodeGenClassFinder.getSources(CodeGenClassFinder.java:41)+
+ at weblogic.utils.classloaders.GenericClassLoader.findResources(GenericClassLoader.java:229)+
Development environment: Netbeans 6.9 IDE, Weblogic 18.104.22.168, Windows Server 2008 R2
Test environment: Weblogic 22.214.171.124, IMB AIX 5.3
I successfully deployed the adapter on Weblogic 126.96.36.199 running on IMB AIX 5.3. I tried removing any external xsd references from ra.xml and weblogic-ra.xml, repacking the archives in IBM AIX 5.3 environment, repacking with different methods and archivers. Nothing helped so far.
Not long after I posted the problem our administrators updated the Weblogic server to version 10.3.5.0. After starting the domain I discovered that the application is deployed even though I did not install it. After redeploy I finally got to the problem - missing library in the resource adapter jar. The decision to clean the cache would definitely work or at least give us a clue.
Unfortunately I have another problem now. After deploying the adapter and setting its configuration we are not able to lookup its JNDI names. Log files contain only info messages for start/stop/deploy and warnings for refresh actions on the Weblogic Admin Console. The custom log declared in the adapter's code is also working and no errors are written to the output. Everything seems to be working based on all log files. Furthermore ra.xml and weblogic-ra.xml are working fine, adapter's deployment plan is also working as expected. I looked at the JNDI tree of the specific server - all JNDI names are invalid (red exclamation mark on the left side).
I finally had to fix this issue so we tried again update, pack-unpack, new domain, praying for a miracle, and so on. If anyone is wondering how to fix ridiculous problem like this, what i did was accidentally targeting the adapter on admin server... and it worked...