Websphere中的启动类

时间:2010-03-24 13:27:39

标签: java websphere

我需要在Websphere中创建一个启动类。该类出现在abc.jar中。并且abc.jar在服务器启动时需要log4j.jar。

对于上面的场景,我在websphere控制台的classpath中用abc.jar创建了启动类,并将log4j.jar保存在WAS的ext文件夹中。这适合我。 但问题是其他配置文件共享WAS的同一个ext文件夹,并且由于Log4j.jar而无法启动。 如果我将Log4j.jar保存在其他位置并将该位置保留在类路径中。启动课不会失败。请帮助我。

2 个答案:

答案 0 :(得分:2)

如果您的应用程序使用EJB,那么您可以使用WAS的一个特殊功能和 ibm-ejb-jar-ext.xml 描述符,其中包含一个start-at-app-start元素:

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-ext
    xmlns="http://websphere.ibm.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-ext_1_1.xsd"
    version="1.1">

    <session name="TestBean">
        <start-at-app-start value="true"/>
    </session>
</ejb-jar-ext>

答案 1 :(得分:0)

我对WebSphere不是很熟悉,也许我不完全理解你的问题 - 但是如何使用web.xml中定义的启动servlet部署webapp?

这就是我的意思:

  • 使用abc.jar创建一个abc.war并将log4j.jar复制到abc.war / WEB-INF / lib
  • 在abc.war / WEB-INF / web.xml中定义您的启动类,如下所示:

<web-app id="WebApp">
<display-name>abc.war</display-name>
<servlet> 
    <servlet-name>ABCStartupServlet</servlet-name>
    <display-name>ABCStartupServlet</display-name>
    <servlet-class>abc.ABCStartupServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
 </servlet>
 ...

这样你就可以在一个地方集成log4j.jar和abc.jar,如果另一个log4j版本导致问题,你可以使用WebSphere类加载器设置,并在服务器启动期间调用你的类。