2016-12-20 3 views
2

Я бегу Чайник внутри EJB на Wildfly.Чайник зажат внутри функции изменения функции функции java

Он работает хорошо, но, когда я повторно развернуть мое EAR приложение, wildfly дает мне много ошибок транзакций:

Exception Description: Error obtaining the Transaction Manager 
Internal Exception: Exception [EclipseLink-23001] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): 
    org.eclipse.persistence.exceptions.TransactionException 
Exception Description: Error looking up external Transaction resource under JNDI name [java:/TransactionManager] 
Internal Exception: javax.naming.NamingException: WFLYNAM0027: Failed instantiate InitialContextFactory org.osjava.sj.SimpleContextFactory from classloader ModuleClassLoader for Module "deployment.XXXX_ear-1.0-SNAPSHOT.ear.XXXX_web.war:main" from Service Module Loader [Root exception is java.lang.IllegalArgumentException: java.io.File parameter must be a directory. [/opt/wildfly-9.0.2.Final/bin/simple-jndi]] 
at 
org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:172) 
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:117) 
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:665) 
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:182) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
at org.jboss.threads.JBossThread.run(JBossThread.java:320) 

Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-23004] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.TransactionException 

Если я перезапустить wildfly, то я могу развернуть приложение без проблем.

Это код, который используется для выполнения задания:

public static KettleEnd executeJob(String filename, Map<String,String> parameters, String[] arguments) 
     throws KettleXMLException, KettleException{ 

    if(!KettleEnvironment.isInitialized()) 
     KettleEnvironment.init(); 

    JobMeta jobMeta = new JobMeta(filename, null); 

    if(parameters != null){ 
     for(String key : parameters.keySet()){ 
      try { 
       jobMeta.setParameterValue(key, parameters.get(key)); 
      } catch (UnknownParamException ex) { 
       LOG.log(Level.SEVERE, null, ex); 
      } 
     } 
    } 
    Job job = new Job(null, jobMeta); 

    if(arguments != null && arguments.length> 0) 
     job.setArguments(arguments); 

    String logChannelId = job.getLogChannelId(); 
    job.start(); 
    job.waitUntilFinished(); 
    int errori = job.getErrors(); 
    List<KettleLoggingEvent> lkl = KettleLogStore.getLogBufferFromTo(logChannelId, true, 0, KettleLogStore.getLastBufferLineNr()); 
    String templog = kettleLogToString(lkl); 
    KettleLogStore.discardLines(logChannelId, true); 

    LOG.log(Level.INFO, "PDIExecutor : fine job, {0} errori",errori); 
    KettleEnvironment.shutdown(); 
    return new KettleEnd(errori, templog); 

} 

Данные вставлены правильно в trasformation, а также JPA. Если я использую проект без каких-либо преобразований, EAR будет повторно развернут без проблем. Если я использую функцию чайника, я не могу повторно развернуть EAR.

EclipseLink зарегистрирован в Wildfly в соответствии с методикой по ссылке https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-UsingEclipseLink

EDIT:

Использование CLI в wildfly, я уже проверил свойства системы с помощью команды:

/core-service=platform-mbean/type=runtime:read-attribute(name=system-properties) 

Что i did:

  1. Start Wildfly;
  2. Проверьте свойства;
  3. Процедура запуска чайника из моего ejb;
  4. Повторно проверьте свойства;

На шаге 4 у меня есть новые свойства, добавленные Kettle, например org.osjava.sj.root, которые меняют значение Wildfly по умолчанию. Итак, решение заключается в том, как изменить имя свойства, используемое чайником, или удалить автономные свойства. Я ищу в этом направлении. Я отредактировал название, так что это слишком близко к реальной проблеме.

+0

Похоже, вы используете EclipseLink. Как вы его установили? –

+0

EclipseLink 2.6.0 установлен как модуль в wildfly. В моем EAR я использую maven и eclipselink помечен как «предоставленный» –

+1

Вы выполнили следующие инструкции: https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-UsingEclipseLink? –

ответ

1

Проблема заключается в следующем: У Wildfly есть свой собственный объект org.osjava.sf.root, выделенный черным цветом, поэтому он использует стандартный. Чайник, когда вы устанавливаете среду, добавьте его org.osjava.sf.root. Когда останавливается чайник, объект все еще там, поэтому Wildfly использует новый, и ничего не работает.

Решение: при установке environmente, вместо

KettleEnvironment.init(); 

использования

KettleEnvironment.init(false); 

так, что имущество не создано.

1

Я хочу начать с заявления об отказе от ответственности, что я ничего не знаю о чайнике.

java.io.File parameter must be a directory. [/opt/wildfly-9.0.2.Final/bin/simple-jndi] 

Глядя на приведенное выше сообщение об ошибке, хотя она выглядит как чайник может искать каталог с именем simple-jndi. Глядя на source, похоже, вы можете использовать системное свойство для установки этого каталога.

В WildFly вы можете установить системное свойство со следующей командой CLI.

/system-property=org.osjava.sj.root:add(value="/some/path") 

Я не знаю, какой файл конфигурации чайника ищет, но указывает на правильный каталог будет получить вас вокруг этого конкретного вопроса.

+0

Ваш ответ указал мне на другую проверку. Я начал wildfly, проверял свойства, затем запускал чайник и перепроверял свойства: чайник вставлял новые свойства, которые переопределяют стандартные свойства wildfly –