部署包含一个ApplicationLifecycleListener的ear时ClassNotFoundException

时间:2014-09-18 20:46:24

标签: deployment netbeans-7 classnotfoundexception ear weblogic12c

我在Netbeans 7.4中定义了一个带有一个Java EE模块(战争)的演示企业应用程序(ear)。

当我将战争部署到Weblogic服务器时,部署成功并执行ServletContextListener。

相同的war文件包含一个扩展ApplicationLifecycleListener的类。此类在weblogic-application.xml

中定义为侦听器
<listener>
  <listener-class>com.reddipped.sysstats.jmx.mbean.SysStatsMBeanLifeCycleListener</listener-class>
</listener>

在部署耳朵时,我得到以下异常;

部署/ home / developer / NetBeansProjects / SysStats / dist / wldeploy / SysStats 部署失败。消息是:java.lang.ClassNotFoundException:com.reddipped.sysstats.jmx.mbean.SysStatsMBeanLifeCycleListener /home/developer/NetBeansProjects/SysStats/nbproject/build-impl.xml:301:尚未部署模块。

战争包含在耳中......我在这里缺少什么? 包和类名在侦听器类中是正确的,甚至复制并粘贴war文件中的名称..

干杯彼得

[2014年9月19日更新]

现在将项目拆分为企业应用程序,Web应用程序和一个jar文件。 现在部署为weblogic.management.DeploymentException: classloader-structure element in weblogic-application.xml is referencing the module-uri SysStatsMBean.jar which does not exist in this application

构建ear文件时,现在具有以下结构。

SysStats.ear
  - SysStats-war.war
      - META-INF
      - WEB-INF
        - classes
          - com
            - reddipped
              - sysstats
                - model
                  - SystemInfo.class
                  - SystemInfoCollector.class
                  - SystemInfoCollectorExecutor.class
  - SysStatsMBean.jar
          - com
            - reddipped
              - sysstats
                - model
                  - SysStats.class
                  - SysStatsMBeanLifeCycleListener.class
                  - SysStatsMXBean.class
  - META-INF
    application.xml
    MANIFEST.MF
    weblogic-application.xml

Weblogic-application.xml包含

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application xmlns="http://xmlns.oracle.com/weblogic/weblogic-application"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/javaee_5.xsd     http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-    application/1.0/weblogic-application.xsd">
      <listener>
        <listener-    class>com.reddipped.sysstats.jmx.mbean.SysStatsMBeanLifeCycleListener</listener-class>
    </listener>

<classloader-structure>
    <module-ref>
        <module-uri>SysStats-war.war</module-uri>
    </module-ref>

    <module-ref>
        <module-uri>SysStatsMBean.jar</module-uri>
    </module-ref>

</classloader-structure>

</weblogic-application>    

1 个答案:

答案 0 :(得分:1)

通过添加listener-uri可以解决此问题。虽然该类在默认包中可用,但必须将其显式添加到侦听器元素中。

  <listener>
    <listener-class>com.reddipped.sysstats.jmx.mbean.SysStatsMBeanLifeCycleListener</listener-class>
    <listener-uri>SysStatsMBean.jar</listener-uri>
</listener>