誰かが答えを知っていればわかるかもしれないと思っていた問題に遭遇しました。リソースが実際に注入されているため、それほど大きな問題ではありませんが、コンソールには、リソースが解決できなかったという情報警告が表示されています。
この問題は、EAP 5.1.2 では発生しません。他の誰かがこの問題に遭遇したかどうか、私は EAP 7 で適切に処理していない可能性があるので、回避策があるかどうかを知りたいと思いました。
バックグラウンド:
- 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-entry-name の完全なパッケージ名とクラス名、および単純な古い 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 の違いに気付きませんでした。名前が違う理由を常に疑問に思っていましたが、忙しすぎて理由を見つけることができませんでした。