1. 程式人生 > >weblogic部署專案出現的一些問題(持續補充中……)

weblogic部署專案出現的一些問題(持續補充中……)

好吧,weblogic的問題確實……

問題一:

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [zip:E:/weblogic/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/_appsdir_scrcu_kstrap_war/a4dr3u/war/WEB-INF/lib/_wl_cls_gen.jar!/com/kayak/util/cache/loader/xxxxxx.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 768

at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:303)

at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:248)

at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:87)

at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)

at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1427)

at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1417)

……………………………………………………………………

org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)

at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)

at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)

at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481)

at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)

at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:181)

at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1868)

at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3154)

at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1518)

at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:484)

at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)

weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361)

………………………………………………………………………………………………weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51)

at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200)

at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)

at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)

at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)

at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)

at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:180)

at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:96)

at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)

at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)

at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

Caused By: java.lang.ArrayIndexOutOfBoundsException: 768

at org.springframework.asm.ClassReader.readClass(ClassReader.java:2462)

at org.springframework.asm.ClassReader.accept(ClassReader.java:544)

at org.springframework.asm.ClassReader.accept(ClassReader.java:508)

……………………………………………………………………………………………………

【解決】首先這個異常真是讓我很。。檢視錯誤日誌,並非web專案的問題,而且該web專案在tomcat當中部署得很正常啊。。又看到有java.lang.ArrayIndexOutOfBoundsException:更是讓人一頭霧水。試了網上所說的設定weblogic的記憶體之類,自己又用jd-gui.exe 去看底層jar包追蹤錯誤源,但是還是一籌莫展。。

看到錯誤日誌第一行紅色部分,應該是未正確載入到xxx.class所致,跟蹤:E:/weblogic/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/_appsdir_scrcu_kstrap_war/a4dr3u/war/WEB-INF/lib/_wl_cls_gen.jarjd-gui.exe開啟_wl_cls_gen.jar包,發現xxx.class確實是// INTERNAL ERROR //的錯誤(未正確解析);但發現專案啟動並未指定要用到xxx.java啊。。

後來,換了一種檔案形式,用WebRoot放在autodeploy下,這下終於可以正常部署了!!

至於為啥用war包不行(有的工程可以,但不知道這個工程為何不行)我也不知道原因。。

——注意到,E:/weblogic/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user下會有一些臨時檔案。通過war包部署時,會自動生成一個名為_wl_cls_gen.jar的jar包;而通過WebRoot(或者說war包的解壓檔案)部署時,則不會有該jar包。。

當有的專案通過war包的方式部署失敗,並出現Caused By: java.lang.ArrayIndexOutOfBoundsException這個奇怪的異常時,不妨改成它的解壓檔案形式部署,說不定可以成功。