2015-08-06 4 views
2

Я хочу использовать AspectJ для временного соткания JAR сервисного уровня, который содержит классы домена DAO & и сеансы и транзакционные бобы, которые совместно используются несколькими веб-проектами внутри EAR, работающими на WildFly (JBoss), но я получаю исключение «No session found for current thread» всякий раз, когда я пытаюсь использовать сеанс hibernate.AspectJ и общий контекст Spring внутри EAR на WildFly 9 с использованием hibernate - «Нет сеанса для текущего потока»!

Вот структура моего EAR:

testapp.ear 
    | 
    |------ /lib/testapp-service.jar + all required libraries as I'm using skinny WARs. 
    | 
    |------ testapp.web1.war 
    | 
    |------ testapp-web2.war 

Я использую следующий технологий:

WildFly 9 
Hibernate 4.1.8 
Spring 3.1.1 
Maven 4 

Spring конфигурация:

Я использую Спринг parentContextKey context-param для загрузки ша красный контекст согласно весенней документации. Я использую AspectJ для загрузки времени моего менеджера транзакций.

Вот ссылка на мой источник: https://github.com/Nigel-funguru/testapp.git

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

Вот мой трассировки стека:

Caused by: org.hibernate.HibernateException: No Session found for current thread 
    at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:97) 
    at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:978) 
    at com.testapp.db.hibernate.EmployeeHibernateRepository.findAll(EmployeeHibernateRepository.java:31) 
    at com.testapp.service.impl.EmployeeManagerImpl.findAll(EmployeeManagerImpl.java:34) 
    at com.testapp.mvc.HomeController.showHomePage(HomeController.java:25) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
    ... 30 more

Для полной трассировки стека смотрите: http://pastebin.ca/3090734

Любая помощь будет оценена.

ответ

0

Для того, чтобы использовать AspectJ нагрузки на основе времени соткать на WildFly, вы должны сделать следующие шаги первой:

  1. добавить JBOSS_MODULES_SYSTEM_PKGS="org.jboss.logmanager" к начала $WILDFLY_HOME/bin/standalone.conf
  2. добавить -Djava.util.logging.manager=org.jboss.logmanager.LogManager к JAVA_OPTS в конце из $WILDFLY_HOME/bin/standalone.conf
  3. добавить -Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.0.0.Final.jar к JAVA_OPTS в конце $WILDFLY_HOME/bin/standalone.conf

Для получения более подробной информации см. https://issues.jboss.org/browse/WFLY-895.

+0

Hi Nigel, просто любопытно, это сработает для вас? –

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