0

Я отчаянно пытаюсь вставить простую строку в одноэлементный 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. В противном случае это будет просто скрыто в коде.

+0

Вам не нужно беспорядок :) – rdcrng

+0

Это не помогает. –

+0

Ну, я ненавижу снова быть бесполезным, но я только что протестировал env-entry в web.xml на GF 3.1.2.2, и он работает так, как ожидалось. Поэтому я должен спросить - ваш метод 'configurationURI()', вы не вызываете его из конструктора, не так ли? – rdcrng

ответ

0

Попробуйте использовать @Resource(lookup = "configurationUri")

+0

Он все еще не работает. Причина в том, что я упаковал компонент в виде отдельного JJB JJB, который попадает в WAR, а не непосредственно в WAR. Однако я не хочу изменять эту структуру, потому что она делает JJJ JAR повторно используемой для других приложений. –

Смежные вопросы