首页 文章

部署包含一个ApplicationLifecycleListener的ear时ClassNotFoundException

提问于
浏览
1

我有一个在Netbeans 7.4中定义的演示企业应用程序(ear),带有一个Java EE模块(war) .

当我将war部署到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文件中的名称 .

干杯彼得

[更新09/19/2014]

现在将项目拆分为企业应用程序,Web应用程序和一个jar文件 . 在部署现在het a 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 回答

  • 1

    能够通过添加listener-uri来解决此问题 . 尽管该类在默认包中可用,但必须将其显式添加到listener元素中 .

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

相关问题