Glassfish のシングルトン EJB に単純な文字列を挿入しようとしています。
import java.net.URI;
import java.net.URISyntaxException;
import javax.annotation.Resource;
import javax.ejb.Singleton;
@Singleton
public class MavenArtifactResolverProviderBean {
private URI configurationUri() throws URISyntaxException {
return new URI(configurationString);
}
@Resource(name = "configurationUri")
private String configurationString;
...
}
Bean クラスは EJB としてパッケージ化されています。これが私のものMETA-INF/ejb-jar.xml
です:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns = "http://java.sun.com/xml/ns/javaee"
version = "3.1"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd">
<enterprise-beans>
<session>
<ejb-name>MavenArtifactResolverProviderBean</ejb-name>
<ejb-class>net.java.trueupdate.server.impl.maven.MavenArtifactResolverProviderBean</ejb-class>
<env-entry>
<env-entry-name>configurationUri</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>net/java/trueupdate/artifact/impl/maven/main-repositories.xml</env-entry-value>
<injection-target>
<injection-target-class>net.java.trueupdate.server.impl.maven.MavenArtifactResolverProviderBean</injection-target-class>
<injection-target-name>configurationString</injection-target-name>
</injection-target>
</env-entry>
</session>
</enterprise-beans>
</ejb-jar>
この混乱が必要かどうかさえわかりません。
次に、Jersey Test Framework 1.17.1 を介して、Embedded GlassFish 3.1.1 で JerseyTest を実行しています。ただし、何も注入されず、メソッドNullPointerException
から得られるものはすべてです。configurationUri()
また、失敗したテストを無視して、Bean JAR を WAR にパッケージ化し、それをスタンドアロンの GlassFish 4.0 にデプロイして同じ結果を得ようとしました。次に、env-entry をweb.xml
WAR の にコピー アンド ペーストし、同じ結果で再デプロイしました。
私は何を間違っていますか?インターネットを検索したところ、おそらく a を微調整する必要があることがわかりましたdomain.xml
が、このための XML スキーマはないようで、asadmin コマンドのドキュメントは...圧倒的です。
どんなヒントでも大歓迎です!
編集: 文字列フィールドにデフォルト値を単純に設定しない理由を 1 つ質問します。これは、この構成アイテムをejb-jar.xml
. それ以外の場合は、コードに隠されているだけです。