JBoss EAP 7 — ошибочная трассировка внедренных ресурсов

Я столкнулся с проблемой, на которую, как я думал, я мог бы увидеть, знает ли кто-нибудь ответ. Это не слишком большая проблема, так как ресурсы фактически внедряются, однако консоль показывает информационное предупреждение о том, что ресурсы не удалось разрешить.

Эта проблема не возникает в EAP 5.1.2. Мне просто любопытно, сталкивался ли кто-нибудь с этой проблемой, и, возможно, я не делаю все правильно в EAP 7, и поэтому есть обходной путь.

Задний план:

  1. Веб-служба EJB упакована в EAR. В EAR нет application.xml или jboss-deployment-structure.xml.

Примечание: хотя я попытался добавить jboss-deployment-structure.xml, просто чтобы посмотреть, помогло ли это.

  1. EJB без сохранения состояния — это веб-сервис

Вот фрагмент из файла ejb-jar.xml:

        <env-entry>
            <description>Variable to distinguish between prod, uat and qa environments</description>
            <env-entry-name>net.mycompany.mypackage.mysubpackage.MyWSService.isUAT</env-entry-name>
            <env-entry-type>java.lang.Boolean</env-entry-type>
            <env-entry-value>false</env-entry-value>
        </env-entry>

        <env-entry>
            <description>Variable to distinguish between prod, uat and qa environments</description>
            <env-entry-name>isQA</env-entry-name>
            <env-entry-type>java.lang.Boolean</env-entry-type>
            <env-entry-value>false</env-entry-value>
        </env-entry>

Как видите, я пробовал оба способа, т.е. с полным именем пакета и класса в имени env-entry-name, а также просто старым именем записей env

Вот фрагмент кода веб-службы:

@SuppressWarnings("unused")
@Stateless
@Local(IMyWSService.class)
@WebService
public class MyWSService implements IMyWSService {

    @Resource(name = "isUAT")
    private boolean isUAT;
    @Resource
    private boolean isQA;

    @WebMethod
    @ResponseWrapper(localName="doSomethingResponse", className="Response", targetNamespace="http://model.mysubpackage.mypackage.net")
    public Response doSomething
    (@WebParam(name="param1", mode=Mode.IN) String param1
    , @WebParam(name="param2", mode=Mode.IN) String param2
    , @WebParam(name="param3", mode=Mode.IN) String param3) {

    //more and more code
    .
    .
    .
    //pertinent method
    initAndSetEnvEntrieVars();
    .
    .
    .
    //the method which actually utilizes the environment variables
    private void initAndSetEnvEntrieVars() {
    //setup env-entry related vars
            if(isUAT){
                System.out.println("We're in UAT");

            }else if(isQA){
                System.out.println("We're in QA");
            }
    }

Примечание: и снова, значения на самом деле внедряются, и около 15 из них я удалил из кода для краткости.

Вот вывод в консоли JBoss

12:43:34,919 INFO  [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 2) WFLYDS0004: Found MyUseful.ear in deployment directory. To trigger deployment create a file called MyUseful.ear.dodeploy
12:43:34,925 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "MyUseful.ear" (runtime-name: "MyUseful.ear")
12:43:34,968 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0207: Starting subdeployment (runtime-name: "MyUsefulService.jar")
12:43:35,017 INFO  [org.jboss.weld.deployer] (MSC service thread 1-3) WFLYWELD0003: Processing weld deployment MyUseful.ear
12:43:35,030 INFO  [org.jboss.weld.deployer] (MSC service thread 1-3) WFLYWELD0003: Processing weld deployment MyUsefulService.jar
12:43:35,032 INFO  [org.jboss.as.ejb3.deployment] (MSC service thread 1-3) WFLYEJB0473: JNDI bindings for session bean named 'MyWSService' in deployment unit 'subdeployment "MyUsefulService.jar" of deployment "MyUseful.ear"' are as follows:

java:global/MyUseful/MyUsefulService/MyWSService!net.mycompany.mypackage.mysubpackage.IMyWSService 
java:app/MyUsefulService/MyWSService!net.mycompany.mypackage.mysubpackage.IMyWSService 
java:module/MyWSService!net.mycompany.mypackage.mysubpackage.IMyWSService 

12:43:35,034 INFO  [org.jboss.weld.deployer] (MSC service thread 1-3) WFLYWELD0006: Starting Services for CDI deployment: MyUseful.ear
12:43:35,036 INFO  [org.jboss.weld.deployer] (MSC service thread 1-6) WFLYWELD0009: Starting weld service for deployment MyUseful.ear
12:43:35,056 INFO  [org.infinispan.configuration.cache.EvictionConfigurationBuilder] (ServerService Thread Pool -- 71) ISPN000152: Passivation configured without an eviction policy being selected. Only manually evicted entities will be passivated.
12:43:35,057 INFO  [org.infinispan.configuration.cache.EvictionConfigurationBuilder] (ServerService Thread Pool -- 71) ISPN000152: Passivation configured without an eviction policy being selected. Only manually evicted entities will be passivated.
12:43:35,057 INFO  [org.jboss.ws.cxf.metadata] (MSC service thread 1-7) JBWS024061: Adding service endpoint metadata: id=MyWSService
 address=http://localhost:8080/MyUsefulService/MyWSService
 implementor=net.mycompany.mypackage.mysubpackage.MyWSService
 serviceName={http://model.mysubpackage.mypackage.net/}MyWSServiceService
 portName={http://model.mysubpackage.mypackage.net/}MyWSServicePort
 annotationWsdlLocation=null
 wsdlLocationOverride=null
 mtomEnabled=false
12:43:35,058 INFO  [org.infinispan.configuration.cache.EvictionConfigurationBuilder] (ServerService Thread Pool -- 71) ISPN000152: Passivation configured without an eviction policy being selected. Only manually evicted entities will be passivated.
12:43:35,058 INFO  [org.infinispan.configuration.cache.EvictionConfigurationBuilder] (ServerService Thread Pool -- 71) ISPN000152: Passivation configured without an eviction policy being selected. Only manually evicted entities will be passivated.
12:43:35,068 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 71) WFLYCLINF0002: Started client-mappings cache from ejb container
12:43:35,080 INFO  [org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean] (MSC service thread 1-7) Creating Service {http://model.mysubpackage.mypackage.net/}MyWSServiceService from class net.mycompany.mypackage.mysubpackage..MyWSService
12:43:35,144 INFO  [org.apache.cxf.endpoint.ServerImpl] (MSC service thread 1-7) Setting the server's publish address to be http://localhost:8080/MyUsefulService/MyWSService
12:43:35,146 INFO  [org.apache.cxf.common.injection.ResourceInjector] (MSC service thread 1-7) failed to resolve resource isUAT
12:43:35,147 INFO  [org.apache.cxf.common.injection.ResourceInjector] (MSC service thread 1-7) failed to resolve resource isQA
12:43:35,183 INFO  [org.jboss.ws.cxf.deployment] (MSC service thread 1-7) JBWS024074: WSDL published to: file:/C:/jboss-eap-7.0/standalone/data/wsdl/MyUseful.ear/MyUsefulService.jar/MyWSServiceService.wsdl
12:43:35,198 INFO  [org.jboss.as.webservices] (MSC service thread 1-4) WFLYWS0003: Starting service jboss.ws.endpoint."MyUseful.ear"."MyUsefulService.jar".MyWSService
12:43:35,378 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 71) WFLYUT0021: Registered web context: /MyUsefulService
12:43:35,403 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 1) WFLYSRV0010: Deployed "MyUseful.ear" (runtime-name : "MyUseful.ear")

Опять же, это скорее просто неприятность, но я подумал, что проведу его для всех вас на случай, если кто-то еще застрянет на его исследовании на несколько часов.

Обновление: извините, я не понял разницы между StackExchange и StackOverFlow - всегда задавался вопросом, почему разные имена... но слишком занят, чтобы выяснить, почему.


person JGlass    schedule 23.11.2016    source источник


Ответы (1)


Поэтому, получив некоторую помощь/совет от хороших парней, например. Алессио Солдано и jaikiran pai на форумах JBoss Алессио в основном сказал: «Привет, мне нужно пойти и проверить код, чтобы подтвердить, но я думаю, что там происходит то, что уровень WS в основном использует другой механизм для хранения значений там Сначала он пытается позволить уровню Apache CXF разрешать значения, если это не удается (с показанным здесь журналом), он использует внутренний механизм JBoss, который фактически получает значения из дескриптора ejb-jar.xml здесь. "

а также...

«просто проигнорируйте это сообщение в журнале, и все готово. Это в основном внутренняя вещь, журнал поступает из apache cxf, поэтому в этом случае мы мало что можем сделать, чтобы избежать этого. Тема, на которую вы ссылаетесь, связана с немного другим сценарий, который был вызван ошибкой (ну, в то время отсутствовавшей функцией), но это решено».

Сообщение на форуме: JBoss EAP 7 — ошибочная трассировка внедренных ресурсов

Если кто-то когда-либо захочет продолжить работу над этим - похоже, мы просто застряли на этом сейчас.

person JGlass    schedule 06.12.2016