2016-11-23 65 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

    如果任何人都希望进一步跟进 - 看起来我们现在只是坚持它