0

私は最近、Glassfish でアプリを開発しましたが、開発は非常にスムーズに進みました。現在、JBoss で同じことをしようとしていますが、次のようなさまざまな問題によって速度が低下しています。@EJB は機能しますが、@Inject は失敗します。私はまだ派手なクラスを持っていません.シングルトンスタートアップクラスと単純なステートレスクラスを注入するだけですが、驚いたことにインジェクションは機能しません. これが私のクラスです:

package com.czetsuya.dropship;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Singleton;
import javax.ejb.Startup;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Singleton
@Startup
public class StartupListener {
    private Logger log = LoggerFactory.getLogger(StartupListener.class);

    @EJB
    private TestService testService;

    public StartupListener() {

    }   

    @PostConstruct
    private void init() {
        testService.test();
        log.debug("startup");
    }
}

サービスクラス:

package com.czetsuya.dropship;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;

@Stateless
@LocalBean
public class TestService {
    public TestService() {

    }

    public void test() {
        System.out.println("run");
    }
}

もう 1 つのことは、ロガーに次のプロデューサーを挿入すると、それも機能せず、スローされることです。

Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Logger] with qualifiers [@Default] at injection point [[field] @Inject private com.czetsuya.dropship.StartupListener.log]

ロガープロデューサー:

@Produces
Logger createLogger(InjectionPoint injectionPoint) {
    return LoggerFactory.getLogger(injectionPoint.getMember().getDeclaringClass().getName());
}

ejb および war プロジェクトに beans.xml があることに注意してください。

私の beans.xml ファイル:

<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/beans_1_0.xsd"></beans>
4

1 に答える 1

0

うーん、悪いことに、Project clean と maven clean を実行し、beans.xml の内容を次のように変更した後、ビルドが破損しているようです。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="urn:java:ee" xmlns:security="urn:java:org.jboss.seam.security" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd"></beans>

インジェクションが機能するようになりました。ロガーインジェクションと同様に。

于 2013-03-28T00:39:14.610 に答える