0

私は何をしようとしていますか?
- テスト用に設定serverKeyvalidity、アプリケーション用に貨物を TokenUtils に注入したいので、これらの値はアプリケーションのロード時に使用可能です

私が試したことは何ですか?
私はJBossコンテナとして使用しており、関連するコードは

@Stateless
public class TokenUtils {

    public static final String AUTH_TOKEN = "X-BB-AUTH";
    public static final String BB_AUTH_PRIVATE_KEY = "auth.key";
    public static final String BB_AUTH_VALIDITY = "auth.validity";
    private static final Pattern PATTERN = Pattern.compile(":");

    private String serverPrivateKey;
    private long validity;

    private static final Logger LOGGER = LoggerFactory.getLogger(TokenUtils.class);

    @SuppressWarnings("UnusedDeclaration")
    public TokenUtils() {
    }

    public TokenUtils(@Nonnull @Configuration(BB_AUTH_PRIVATE_KEY) final String serverPrivateKey,
                      @Configuration(BB_AUTH_VALIDITY) final long validity) {
        this.serverPrivateKey = serverPrivateKey;
        this.validity = validity;

        LOGGER.info("serverPrivateKey:" + serverPrivateKey);
        LOGGER.info("validity:" + validity);
    }
}

また、作成さMETA-INF/beans.xmlsrc/main/resourcesた同じパッケージにあるTokenUtilsので、Beanのインスタンス化は問題ではないと思います

カーゴが Bean をインスタンス化するときに値を注入したいので、値を次のように設定しますpom.xml

<container>
  <systemProperties>
    <auth.key>secure</auth.key>
    <auth.validity>720000</auth.validity>
  </systemProperties>
</container>

貨物を開始すると、次のことが起こっていることがわかります

INFO] [talledLocalContainer] 06:07:08,068 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named TokenUtils in deployment unit deployment "market.war" are as follows:
[INFO] [talledLocalContainer] 
[INFO] [talledLocalContainer]   java:global/market/TokenUtils!com.org.proj.service.authentication.TokenUtils
[INFO] [talledLocalContainer]   java:app/market/TokenUtils!com.com.proj.service.authentication.TokenUtils
[INFO] [talledLocalContainer]   java:module/TokenUtils!com.com.proj.service.authentication.TokenUtils
[INFO] [talledLocalContainer]   java:global/market/TokenUtils
[INFO] [talledLocalContainer]   java:app/market/TokenUtils
[INFO] [talledLocalContainer]   java:module/TokenUtils

問題?
- しかし、値はserverPrivateKey=nullありますvalidity=0
- さらに、Bean のインスタンス化中にLOGGER.info値を確認できるはずですが、ログでそれらを見つけることができません

私が間違っていることは何ですか?

4

1 に答える 1

0

私はその過ちに気づきました。私はコンストラクタで使用@Injectしていませんでした。TokenUtils次の変更で修正されました

@Inject
public TokenUtils(@Nonnull @Configuration(BB_AUTH_PRIVATE_KEY) final String serverPrivateKey,
                      @Configuration(BB_AUTH_VALIDITY) final long validity) {
        this.serverPrivateKey = serverPrivateKey;
        this.validity = validity;

        LOGGER.info("serverPrivateKey:" + serverPrivateKey);
        LOGGER.info("validity:" + validity);
    }

これで、次のようにログに値が表示されました

[INFO] [talledLocalContainer] 06:39:30,042 INFO  [com.org.proj.commons.cdi.config.ConfigurationProvider] (http--0.0.0.0-9090-1) getProperty(auth.key) is secure
[INFO] [talledLocalContainer] 06:39:30,043 INFO  [com.org.proj.commons.cdi.config.ConfigurationProvider] (http--0.0.0.0-9090-1) getProperty(auth.validity) is 720000
于 2013-09-12T13:40:28.900 に答える