2016-10-04 17 views
3

我們正在將J2EE應用程序(JSP & EJB 2.0)從WebLogic Service 8.1升級到12c(12.2.1.1.0)。我們正在將分解的EAR構建到域目錄中的目錄。我們使用管理控制檯來部署應用程序,但它無法與weblogic.management.DeploymentException: Application <appname> does not have any Components in it.WebLogic應用程序沒有任何組件

在日誌中出現以下內容:

####<Sep 26, 2016, 6:16:08,62 PM EDT> <Error> <Deployer> <CVG-000216B-010> <BaseServer> <[STANDBY] ExecuteThread: '11' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <9b2f9073-e2d2-4c02-915c-4e5de240621e-00000012> <1474928168062> <[severity-value: 8] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-149265> <Failure occurred in the execution of deployment request with ID "25758041366812" for task "0" on [partition-name: DOMAIN]. Error is: "weblogic.management.DeploymentException: Application [MyApp] does not have any Components in it." 
weblogic.management.DeploymentException: Application [MyApp] does not have any Components in it. 
    at weblogic.jdbc.module.JDBCDeployment.createModule(JDBCDeployment.java:40) 
    at weblogic.jdbc.module.JDBCDeployment.<init>(JDBCDeployment.java:25) 
    at weblogic.jdbc.module.JDBCDeploymentFactory.createDeployment(JDBCDeploymentFactory.java:79) 
    at weblogic.application.internal.DeploymentManagerImpl.createDeployment(DeploymentManagerImpl.java:186) 
    at weblogic.application.internal.DeploymentManagerImpl.access$700(DeploymentManagerImpl.java:52) 
    at weblogic.application.internal.DeploymentManagerImpl$DeploymentCreatorImpl.createDeployment(DeploymentManagerImpl.java:583) 
    at weblogic.deploy.internal.targetserver.BasicDeployment.createDeployment(BasicDeployment.java:231) 
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:223) 
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doPrepare(ActivateOperation.java:103) 
    at weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:241) 
    at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:794) 
    at weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1340) 
    at weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:267) 
    at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:177) 
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:186) 
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$000(DeploymentReceiverCallbackDeliverer.java:14) 
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:47) 
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666) 
    at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348) 
    at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333) 
    at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54) 
    at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41) 
    at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:346) 
> 

該應用程序並安裝(狀態=「已安裝」),但無法啓動。如果我們將其刪除並重新安裝,則不會發生錯誤,並且其狀態爲「活動」,我們可以測試該應用程序。但是,當服務器重新啓動時,上述異常將顯示在日誌中,並且該應用程序處於「ADMIN」狀態。它無法啓動,因此我們將其刪除並通過管理控制檯重新安裝,然後運行,以便我們對其進行測試。

應用程序確實有J2EE組件,至少是web應用程序,因爲這正是我們正在測試的。刪除應用程序並從管理控制檯重新安裝應用程序後,我們會在「部署摘要」頁面的「模塊和組件」部分中看到Web應用程序,所有EJB和EJB模塊。

我們查看了WebLogic代碼,發現錯誤正在生成的位置。看起來沒有爲應用程序生成組件MBean。這是從weblogic.jdbc.module.JDBCDeployment類:

private static Module createModule(AppDeploymentMBean mbean) throws DeploymentException { 
    ComponentMBean[] c = mbean.getAppMBean().getComponents(); 
    if ((c == null) || (c.length == 0)) { 
     throw new DeploymentException("Application " + ApplicationVersionUtils.getDisplayName(mbean) + " does not have any Components in it."); 
    } 
    --[snipped]-- 

我們有什麼應用程序時,最初加載到去做部署展開的EAR以便WebLogic 12c的識別組件?

在此先感謝您的幫助或見解。

+0

您是否將所有部署描述符從8.1升級到12.2.1.1.0? –

+0

是的,我們使用'weblogic.DDConverter'來更新一切; application.xml和所有ejb描述符(例如'ejb-jar.xml'),包括weblogic-ejb-jar.xml和weblogic-cmp-rdbms-jar.xml等特定於weblogic的文件。 – SCote

+1

您是否有任何名稱與您的應用程序或模塊相同的jdbc數據源?如果是,請更改並重新部署您的應用程序。 –

回答

3

感謝Emmanuel Collin的建議,通過重命名與應用程序同名的數據源來解決此問題。

  1. 刪除應用
  2. 刪除違規的數據源
  3. 用新名稱
  4. 重新創建數據源
  5. 一旦服務器出現重新安裝應用程序

的應用程序安裝無誤,並提供。

相關問題