Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > EJB Interceptor и DI


Автор: ki6opr 10.8.2010, 07:24
в общем сталкнулся с такой проблеммой:
есть интерсептор в который должен инжектится EJB
интерсептор используется с другим бином
упаковано все в EAR проект в котором находится архив с ejb

выглядит все вот так
Код

public class TestInterceptor {

    @EJB
    private Test2Local test2Local;

    @AroundInvoke
    public Object invoke(InvocationContext invocation) throws Exception {
        return invocation.proceed();
    }
}

@Stateless
@Interceptors(value = TestInterceptor.class)
public class Test1Bean implements Test1Local {

    public void hello() {
    }
}

@Local
public interface Test1Local
{
  public void hello();
}

@Stateless
public class Test2Bean implements Test2Local {

    public void hello() {
    }
}

@Local
public interface Test2Local
{
  public void hello();
}


Локальные интерфейсы я не привожу потому что и так понятно что в них smile 

в общем на GlassFish все нормально деплоится и зависимость инжектируется 
на JBoss NullPointerException при деплоее 

Код

org.jboss.deployers.spi.DeploymentException: Error deploying TrashEAR-ejb.jar: null
    at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:201)
    at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:103)
    at org.jboss.deployers.vfs.spi.deployer.AbstractVFSRealDeployer.internalDeploy(AbstractVFSRealDeployer.java:45)
    at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
    at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
    at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
    at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
    at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1210)
    at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
    at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598)
    at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
    at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
    at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:698)
    at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:290)
    at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:221)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
    at org.jboss.ejb3.javaee.JavaEEComponentHelper.createObjectName(JavaEEComponentHelper.java:46)
    at org.jboss.ejb3.deployers.JBoss5DeploymentScope.getEjbContainer(JBoss5DeploymentScope.java:170)
    at org.jboss.ejb3.Ejb3Deployment.getEjbContainer(Ejb3Deployment.java:407)
    at org.jboss.ejb3.EJBContainer.resolveEjbContainer(EJBContainer.java:1418)
    at org.jboss.injection.AbstractHandler.addDependency(AbstractHandler.java:50)
    at org.jboss.injection.EJBRemoteHandler.ejbRefDependency(EJBRemoteHandler.java:146)
    at org.jboss.injection.EJBRemoteHandler.handleFieldAnnotations(EJBRemoteHandler.java:393)
    at org.jboss.injection.InjectionUtil.processFieldAnnotations(InjectionUtil.java:160)
    at org.jboss.injection.InjectionUtil.processAnnotations(InjectionUtil.java:197)
    at org.jboss.ejb3.EJBContainer.processMetadata(EJBContainer.java:609)
    at org.jboss.ejb3.Ejb3Deployment.processEJBContainerMetadata(Ejb3Deployment.java:415)
    at org.jboss.ejb3.Ejb3Deployment.start(Ejb3Deployment.java:523)
    at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:194)
    ... 28 more


я уже незнаю даже в какую сторону копать по спецификациям это все должно работать и инжектить ресурсы в интерсептор через @EJB и @Resource допустимо.
может кто сталкивался ? 

Автор: MisterCleric 10.8.2010, 09:40
Привет.
А Test2Local помечен у тебя как @Local?

Автор: ki6opr 10.8.2010, 09:55
Цитата(MisterCleric @ 10.8.2010,  09:40)
Привет.
А Test2Local помечен у тебя как @Local?

да
видно зря не выложил интерфейсы, прошу прошения, сейчас исправлю.


Updated
интерфейсы теперь тоже в примере.

кстати фишка еще в том что не работает только если деплой идет в папку cluster (это jboss farming деплой, если используется кластер, приложение раскидывается по всем нодам)
если деплоить просто одиночное приложение все себе нормально развертывается.
сервер 5.01

на 6,02 тоже воспроизводится

Автор: ki6opr 11.8.2010, 03:00
в итоге после активного гугления я теперь точно знаю что Jboss неумеет инжектить EJB в интерсепторы, можно только ресурсы через @Resource и возможно entity manager через @PersistentContext (не проверял).

:/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)