Я пытаюсь прочитать значение 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 выше все еще происходит).
В чем причина этого?
В этой инъекции ничего неправильного. Аннотирование ресурса от 'javax.annotation.Resource' правильное? – whitlaaa
Да, это правильно. –