2013-05-02 3 views
0

У меня есть простой класс java, который отображает «ожидающий» текст при исполнении, в проекте «TMSCore» java.Как выполнить файл jar при запуске jboss7?

package com.stock.bo; 

    public class example { 

     /** 
     * @param args 
     */ 
     public static void main(String[] args) { 
      // ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
      System.out.println("================================> waiting"); 
     } 

    } 

Я создал TMSCore.jar и установить этот example.class как точку входа, мой файл банки.

Затем я создал модуль для этого проекта в C: \ Jboss \ JBoss-а-7.1.1 \ модули \ орг \ ТМС \ основной и вставить банку в том же пути

тогда у меня есть созданный module.xml и вставили в том же пути

module.xml

<?xml version="1.0" encoding="UTF-8"?> 
<module xmlns="urn:jboss:module:1.1" name="org.tms"> 
    <resources> 
    <resource-root path="TMSCore.jar"/> 
    </resources> 
</module> 

тогда я создал JBoss-развертывания-structure.xml в моем WebProject/веб-каталог инф

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure> 
    <deployment> 
    <dependencies> 
     <module name="org.tms"/> 
    </dependencies> 
    </deployment> 
</jboss-deployment-structure> 

, когда я запустить сервер с моей войной, содержащей выше JBoss-развертывания-structure.xml, в моей консоли его показ развертывается TMSCore.jar

, но мой «ожидание» текст в моем банке не отображается на консоли

моего требования я должен получить «================================> ожидание» на моей консоли когда JBoss является запущен

или еще можно предложить, как сделать банку для запуска на стартовом сервере jboss?

BTW я использую JBOSS7.1

ответ

1

Если я прав, это потому, что JBoss не выполнить библиотеку, это только нагрузки классы, содержащиеся в файле jar. Поэтому выполнение основной функции и создание исполняемого файла jar не поможет.

Если ваша цель состоит в том, чтобы иметь глобальный модуль на сервере, я предлагаю вам эти модификации:

  1. Создать модуль (как вы уже сделали)
  2. Объявить как зависимость в jboss-deployment-structure.xml (как вы уже сделали)
  3. Объявить как глобальный модуль на сервере, поэтому он будет загружен только один раз JBoss. Отредактируйте конфигурационный файл standalone.xml и изменить раздел:

    <subsystem xmlns="urn:jboss:domain:ee:1.0"> 
        <global-modules> 
         <module name="org.tms" /> 
        </global-modules> 
    </subsystem> 
    

Теперь у вас есть модуль, который имеет классов загружаются только один раз. Я вам нужно иметь только один экземпляр вашего Example класса, я предлагаю вам использовать синглтон:

public class Example { 

    // The only one instance 
    private static Example instance; 

    // Private constructor to avoid creation of other instances of this class 
    private Example() 
    { 
     System.out.println("================================> waiting"); 
    } 


    public static Example getInstance() 
    { 
     if(instance == null) 
     { 
      instance = new Example(); 
     } 
     return instance; 
    } 

} 

Затем, чтобы использовать его во всех проектах на сервере

Example ex = Example.getInstance(); 

даст Вам существующий экземпляр (или создать его первый раз).

Примечание: Не могу попробовать, поэтому не гарантируем, что это сработает.


Edit: Может быть, небольшая модификация Example класса может также заставить ее работать во время загрузки классов:

public class Example { 

    // The only one instance 
    private static Example instance = new Example(); 

    // Private constructor to avoid creation of other instances of this class 
    private Example() 
    { 
     System.out.println("================================> waiting"); 
    } 

    public static Example getInstance() 
    { 
     return instance; 
    } 

} 

снова: не тестировалось.

1

Вы не можете запустить банку, но вы можете запустить метод запуска в одноэлементном режиме.

@Startup 
@Singleton 
public class FooBean { 

    @PostConstruct 
    void atStartup() { ... } 

    @PreDestroy 
    void atShutdown() { ... } 

} 

Это произойдет при запуске и завершении работы приложения. Я бы назвал нужную вам функцию.

См. http://docs.oracle.com/javaee/6/tutorial/doc/gipvi.html

Смежные вопросы