2013-10-23 3 views
1

자바 백엔드가있는 웹 응용 프로그램을 개발하려고하지만 작업이 완료되었고이를 위해 ManagedExecutorService을 사용하고 있는지 추적해야합니다.Java EE @Resource가 web.xml에 매핑되지 않았습니다.

을 삽입하기 위해 @Resource 주석을 사용하려고합니다.

@Resource(name = "myExecutionService") 
private ManagedExecutorService mExecutionService; 

의 web.xml :

<resource-env-ref> 
    <resource-env-ref-name>myExecutionService</resource-env-ref-name> 
    <resource-env-ref-type>javax.enterprise.concurrent.ManagedExecutorService</resource-env-ref-type> 
</resource-env-ref> 

하지만 난 그냥 사용하려는 경우

13:52:31,207 INFO [org.jboss.as.server] (management-handler-threads - 158) JBAS015870: Deploy of deployment "tbm-core-1.0.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"tbm-core-1.0.war\".WeldService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"tbm-core-1.0.war\".WeldService: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [TestBedManager] with qualifiers [@Default] at injection point [[field] @Inject private com.shenick.teravm.core.ws.TestBedManagerWebService.testBedManager]"},"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.module.\"tbm-core-1.0\".\"tbm-core-1.0\".env.myExecutionServicejboss.naming.context.java.jboss.resources.myExecutionServiceMissing[jboss.naming.context.java.module.\"tbm-core-1.0\".\"tbm-core-1.0\".env.myExecutionServicejboss.naming.context.java.jboss.resources.myExecutionService]"]} 

답변

0

"실종/사용할 수없는 종속 서비스"를 놓친 거지 않다는 오류가 계속 기본 구현, 사용

@Resource(mappedName="java:comp/DefaultManagedExecutorService") 

이 경우 web.xml에 지정할 필요가 없습니다.

독자적인 구현을 사용하려면 먼저 응용 프로그램 서버 리소스를 구성해야한다고 생각합니다 (구현과 함께 설정).

편집 :

내가 우연히 이걸 발견 : How to Configure Scheduled Tasks in Wildfly. 너를 도울 수있어.

+0

답장을 보내 주셔서 감사합니다. 귀하의 제안을 시도했지만 여전히 동일한 오류가 발생합니다. JBOSS 응용 프로그램 서버를 사용하여 리소스를 먼저 구성하는 방법을 자세히 설명 할 수 있습니까? – Schokea

1

ManagedexecutorService가 Java 7이고 분명히 jboss 7.1.1이 스레드를 사용하는 응용 프로그램을 배포하지 않기 때문에 문제가 발생했습니다.

이 문제를 해결하려면 EAP 6.1 (jboss의 새 이름)으로 업그레이드해야합니다.

+2

잘 해내 자. 첨예 한 문제! 두 가지 사항은 다음과 같습니다. 첫째, EAP 6.1은 JBoss의 새로운 이름이 아니며 상업적으로 지원되는 JBoss의 특정 릴리스입니다. JBoss의 새로운 이름은 WildFly입니다. 두 번째로 JBoss AS 7이 지원하는 EE 6에서 작업자 스레드를 얻는 다른 방법이 있습니다. 가장 좋은 방법은 [EJB에서 비동기 호출] (http://docs.oracle.com/javaee/6/tutorial/doc/gkkqg.html)을 사용하는 것입니다. 백그라운드 스레드에서 실행되도록 코드를 보내고,'Executor '가 제공하는 것과 비슷한'Future'를 리턴하여 완료 시점을 알 수 있습니다. –

+0

답장을 듣고 건배하지만 JBoss와 Java의 적절한 버전을 사용하게 될 것입니다. (고맙게도) 새로 시작된 프로젝트이므로 기존 릴리스에 대한 의존성이 없습니다. :) – Schokea

관련 문제