2017-10-19 76 views
-2

我有一個主要的Java應用程序在tomcat環境中運行。 現在我寫了一個java類,把它放到一個JAR文件和TCs lib文件夾中。我現在可以在主應用程序中通過導入類並調用構造函數來訪問該類。如何在Tomcat啓動時創建Java類?

有沒有辦法在TC啓動時創建該類。所以我可以訪問類變量?

謝謝! e。

// EDIT 1 這裏是我的例子:

import javax.servlet.ServletContextEvent; 
import javax.servlet.ServletContextListener; 

public class MyAppServletContextListener implements ServletContextListener{ 
    @Override 
    public void contextInitialized(ServletContextEvent arg0) { 
     System.out.println("**************** ServletContextListener started"); 
     Beach x = new Beach(); 

    } 

    @Override 
    public void contextDestroyed(ServletContextEvent arg0) { 
    } 
} 

這一切都進入一個jar文件,到

Beach.java

public class Beach { 
    public static void main(String []args) { 
     System.out.println("***********************"); 
    } 
} 

MyAppServletContextListener.java: ... /WEB-INF/lib/beach.jar

和這是我除了在web.xml:

<web-app> 
    <listener> 
    <listener-class> 
      MyAppServletContextListener 
     </listener-class> 
    </listener> 
</web-app> 

,這是錯誤的server.log:

10:42:26,440 | ERROR | [[/APP]] | Error configuring application listener of class MyAppServletContextListener 
java.lang.ClassNotFoundException: MyAppServletContextListener 
+1

看來你要尋找的[Singleton模式](https://en.wikipedia.org/wiki/Singleton_pattern )。 – Andreas

回答

2

您可以創建一個實現類ServletContextListener

一旦註冊這個類可以讓你調用所需的構造函數。

public class MyAppServletContextListener implements ServletContextListener{ 
    @Override 
    public void contextInitialized(ServletContextEvent arg0) { 
     YourClass x = new YourClass(); 
    } 

    @Override 
    public void contextDestroyed(ServletContextEvent arg0) { 
    } 
} 

您需要這個類註冊到web.xml中:

<web-app ...> 
    <listener> 
    <listener-class> 
      com.yourpackage.MyAppServletContextListener 
     </listener-class> 
    </listener> 
</web-app> 
+0

嗨@Nirekin非常感謝。我不太熟悉那個足..因爲你可能會注意到:)我已經在線程中更新了我的做法... TC找不到源代碼:(謝謝! – Ele

+0

在web.xml中,你需要添加包到你的class'com.yourpackage.MyAppServletContextListener' – Nirekin

+0

非常感謝!!!! – Ele