2016-11-23 24 views
0

我遇到了一個問題,我想如果有人知道答案,我可能會看到這個問題。這不是一個太大的問題,因爲資源實際上正在被注入 - 但是控制檯正在顯示和信息性警告資源未能解決。JBoss EAP 7 - 注入資源上的錯誤跟蹤

在EAP 5.1.2中不會發生此問題。我只是好奇,如果其他人遇到了問題,可能我沒有在EAP 7中正確做事,因此有一個解決方法。

背景:

  1. 打包在一個EAR EJB Web服務。 EAR沒有application.xml或jboss-deployment-structure.xml

注意:雖然我嘗試添加一個jboss-deployment-structure.xml來查看它是否有幫助。

  • 無國籍EJB是一個web服務
  • 下面是來自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-條目名稱全包和類名以及剛剛普通的老ENV條目名稱

    這裏的Web服務代碼片段:

    @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之間的區別 - 一直想知道爲什麼不同的名字......但太忙,不知道爲什麼。

    回答

    0

    因此,從好人那裏得到一些幫助/建議後, Alessio Soldano和jaikiran pai在JBoss論壇上基本上說: 「嗨, 我需要去檢查代碼以確認,但我認爲發生的事情是WS層基本上經歷了不同的機制首先嚐試讓Apache CXF層解析值,如果失敗(使用此處顯示的日誌),它將使用內部JBoss機制,這就是實際從ejb-jar.xml描述符中獲取值的地方。 「

    和...

    「根本不理會在日誌中該消息,你就大功告成了。它基本上是一個內部的事情,日誌來自Apache的CXF所以沒有太多,我們可以在這種情況下,如何避免它。 您鏈接的線程是與它是由一個錯誤(當然,當時缺少功能)而造成的方案稍有不同,但是這解決了「

    論壇發帖是: JBoss EAP 7 - erroneous trace on Injected Resources

    如果任何人都希望進一步跟進 - 看起來我們現在只是堅持它