메시지 구동 Bean TextMDB에 대한 ejb-jar.xml의 JBoss 오류 : 예상 하나의 ref-name 태그
문제
예제 ejb-jar.xml 및 jboss.xml 파일을 복사하고 붙여 넣었습니다. http://docs.jboss.org/jbossas/jboss4guide/r4/html/ch6.chapt.html#ch6.mdbejbjar.ex JBoss가 배포하려고 할 때 다음과 같은 오류를 받고 있습니다.
ERROR [ScannerThread] deployment.MainDeployer (MainDeployer.java:943) - Could not create deployment: file:/...-ejb2.jar
org.jboss.deployment.DeploymentException: Error in ejb-jar.xml for Message Driven Bean TextMDB: expected one res-ref-name tag
at org.jboss.metadata.ApplicationMetaData.importEjbJarXml(ApplicationMetaData.java:403)
at org.jboss.metadata.XmlFileLoader.load(XmlFileLoader.java:151)
at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:506)
또한 Eclipse에서 샘플 EJB-JAR.XML 파일이 DTD를 준수하지 않는다는 것을 알았습니다. 더 나은 샘플 EJB2 MDB가 있습니까?
해결책
배포 디스크립터를 수정하지 않는 이유는 무엇입니까? 이 시도 ejb-jar.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC
"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<enterprise-beans>
<message-driven>
<ejb-name>TextMDB</ejb-name>
<ejb-class>org.jboss.chap6.ex2.TextMDB</ejb-class>
<transaction-type>Container</transaction-type>
<acknowledge-mode>AUTO_ACKNOWLEDGE</acknowledge-mode>
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
</message-driven-destination>
<resource-ref>
<res-ref-name>jms/QCF</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</message-driven>
</enterprise-beans>
</ejb-jar>
다른 팁
또 다른 버기 예. DTD를 준수하도록 변경하면 문제가 해결됩니다.
에서:
<res-ref-name>jms/QCF</res-ref-name>
<resource-ref>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
에게:
<resource-ref>
<res-ref-name>jms/QCF</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
제휴하지 않습니다 StackOverflow