2015-08-28 8 views
0

Я пытаюсь прочитать значение JNDI в моем веб-приложение с использованием имен подсистемы WildFly, похожий на WildFly JNDI ReferenceКак использовать запись JNDI в моем приложении, запущенном на WildFly

Вот раздел Релевент моей автономной. XML

<subsystem xmlns="urn:jboss:domain:naming:2.0" > 
    <bindings> 
    <simple name="java:global/myId" value="ID001" type="java.lang.String" /> 
    </bindings> 
    <remote-naming/> 
</subsystem> 

Вот код, я использую для запроса JNDI

@Resource(lookup = "java:global/myId") 
private String myId; 

Когда я раскрываю, поле MyId не получает набор, и я получаю следующее из поставить на консоль:

17:18:43,115 INFO [org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean] (MSC service thread 1-1) Creating Service {http://example.com}MyAppService from class com.abc.MyAppPort 
17:18:43,428 INFO [org.apache.cxf.endpoint.ServerImpl] (MSC service thread 1-1) Setting the server's publish address to be http://localhost:9080/MA/MyAppService 
17:18:43,443 FINE [org.apache.cxf.resource.DefaultResourceManager] (MSC service thread 1-1) resolving resource <com.example.impl.MyApp/myId> type <class java.lang.String> 
17:18:43,443 FINE [org.apache.cxf.resource.DefaultResourceManager] (MSC service thread 1-1) resolving resource <null> type <class java.lang.String> 
17:18:43,443 INFO [org.apache.cxf.common.injection.ResourceInjector] (MSC service thread 1-1) failed to resolve resource com.example.impl.MyApp/myId 

Update: Если я делаю поиск в JBoss-web.xml следующим образом:

<resource-env-ref> 
    <resource-env-ref-name>myId</resource-env-ref-name> 
    <resource-env-ref-type>java.lang.String</resource-env-ref-name> 
    <lookup-name>java:global/myId</lookup-name> 
</resource-env-ref> 

и удалить поиск из аннотации:

@Resource 
private String myId; 

myId настроен так, как ожидалось (трассировка cxf выше все еще происходит).

В чем причина этого?

+1

В этой инъекции ничего неправильного. Аннотирование ресурса от 'javax.annotation.Resource' правильное? – whitlaaa

+0

Да, это правильно. –

ответ

1

Убедитесь, что вы сделали необходимое для integrate cxf with wildfly. Из вашей трассы журнала кажется, что cxf берет на себя wildfly, чтобы перейти к @Resource injection. Конфигурация и код, который вы сделали, верны.

+0

Я ничего не сделал с явным, но проект - это jaxws, сгенерированный из wsdl, поэтому я предполагаю, что именно поэтому cxf задействован. –

+0

Cxf - это конкретное понимание. Посмотрите на https://docs.jboss.org/author/display/WFLY8/JAX-WS+Tools?_sscc=t – Franck

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