Я отчаянно пытаюсь вставить простую строку в одноэлементный EJB на Glassfish.Не удается ввести строку @Resource в @Singleton EJB с GlassFish
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>
Я не уверен, если я даже нужен этот беспорядок.
Далее я запускаю JerseyTest на Embedded GlassFish 3.1.1 через тестовую платформу Джерси 1.17.1. Однако ничего не вводится, и все, что я получаю, это NullPointerException
от метода configurationUri()
.
Я также попытался проигнорировать неудавшийся тест, упаковать бит JAR в WAR и развернуть его на автономный GlassFish 4.0 с тем же результатом. Затем я скопировал env-запись в файл web.xml
WAR и переустановил его с тем же результатом.
Что я делаю неправильно? Из поиска в Интернете я понял, что, возможно, мне нужно настроить domain.xml
, но, похоже, для этого нет схемы XML, и документация команды asadmin ... подавляющая.
Любой совет приветствуется!
EDIT: Один мой вопрос, почему я не просто задал значение по умолчанию для поля строки. Это связано с тем, что я хочу документировать этот элемент конфигурации через ejb-jar.xml
. В противном случае это будет просто скрыто в коде.
Вам не нужно беспорядок :) – rdcrng
Это не помогает. –
Ну, я ненавижу снова быть бесполезным, но я только что протестировал env-entry в web.xml на GF 3.1.2.2, и он работает так, как ожидалось. Поэтому я должен спросить - ваш метод 'configurationURI()', вы не вызываете его из конструктора, не так ли? – rdcrng