2010-02-21 9 views
1

netbeans 6.8 및 glassfish v3을 사용하고 간단한 jms 응용 프로그램을 작동시킵니다. 나는이있어 :jms unresolved message-destination-ref

com.sun.enterprise.container.common.spi.util.InjectionException: 
Exception attempting to inject Unresolved Message-Destination-Ref 
jms/[email protected]@null into class enterpriseapplication4.Main 

코드 :

내 글래스 피시 v3의 관리 콘솔에서
public class Main { 
@Resource(name = "jms/myQueue") 
private static Topic myQueue; 
@Resource(name = "jms/myFactory") 
private static ConnectionFactory myFactory; 
... 
// the rest is just boiler plate created by netbeans 
} 

, 내 대상 자원으로 내 ConnectionFactory를하고 JMS/myQueue가로 JMS/myFactory 있습니다.

무엇이 누락 되었습니까?

전체 스택 :

 
WARNING: enterprise.deployment.backend.invalidDescriptorMappingFailure 
com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Unresolved Message-Destination-Ref jms/[email protected]@null into class enterpriseapplication4.Main 
     at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:614) 
     at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:384) 
     at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:210) 
     at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:202) 
     at org.glassfish.appclient.client.acc.AppClientContainer$ClientMainClassSetting.getClientMainClass(AppClientContainer.java:599) 
     at org.glassfish.appclient.client.acc.AppClientContainer.getMainMethod(AppClientContainer.java:498) 
     at org.glassfish.appclient.client.acc.AppClientContainer.completePreparation(AppClientContainer.java:397) 
     at org.glassfish.appclient.client.acc.AppClientContainer.prepare(AppClientContainer.java:311) 
     at org.glassfish.appclient.client.AppClientFacade.prepareACC(AppClientFacade.java:264) 
     at org.glassfish.appclient.client.acc.agent.AppClientContainerAgent.premain(AppClientContainerAgent.java:75) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:323) 
     at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:338) 
Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/jms/myQueue' in SerialContext targetHost=localhost,targetPort=3700 [Root exception is javax.naming.NameNotFoundException: No object bound for java:comp/env/jms/myQueue [Root exception is java.lang.NullPointerException]] 
     at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442) 
     at javax.naming.InitialContext.lookup(InitialContext.java:392) 
     at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:513) 
     ... 15 more 
Caused by: javax.naming.NameNotFoundException: No object bound for java:comp/env/jms/myQueue [Root exception is java.lang.NullPointerException] 
     at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:218) 
     at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:428) 
     ... 17 more 
Caused by: java.lang.NullPointerException 
     at javax.naming.InitialContext.getURLScheme(InitialContext.java:269) 
     at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:318) 
     at javax.naming.InitialContext.lookup(InitialContext.java:392) 
     at com.sun.enterprise.naming.util.JndiNamingObjectFactory.create(JndiNamingObjectFactory.java:75) 
     at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:688) 
     at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:657) 
     at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:148) 
     ... 18 more 

감사

답변

1

는 주제 jms/myQueue의 조회에 실패했습니다

javax.naming.NameNotFoundException: No object bound for java:comp/env/jms/myQueue 

어쩌면 당신이 주제를 만들 못했지만는 JNDI에서 사용할 가능성이 높다되지 않습니다 이름 jms/myQueue (덧붙여서, 이라는 이름으로jms/myQueue을 지정하는 것은 최선의 선택이 아니지만이 부수적이다).

는 주제를 찾으려면 JDNI 트리를 탐색하려면 (관리 콘솔에서 JDNI 브라우저와 함께 제공되지 않습니다 글래스 피쉬 v3의) 다음 명령을 사용

asadmin list-jndi-entries 

은 목록에서 컨텍스트를 찾기 다음 사용 :

asadmin list-jndi-entries --context <your context> 
1

정적 선언을 제거하려고합니다.

1

"Java EE 5 Development with Netbeans 6"의 JMS 자습서를 따른 후 OP와 동일한 문제가 발생했습니다. Glassfish 3.0.1 및 Netbeans 6.9.1의 새로운 설치 사용

@Resource (이름 = "JMS/myQueue가")

에 :

@Resource

이 솔루션에서 자원 주석의 속성을 (넷빈즈가 발생했다고)를 변경했다 (mappedName = "JMS/myQueue가")

(너무 연결 팩토리에 대해 동일)

[편집 : 물론, 지금은 장을 다시 읽어 나는 저자가 이것을 사이드 바에 명시 적으로 언급 한 것을 본다. 정말 RTFM해야합니다!]