Bonjour,
Je travaille avec Netbeans 6.7 et Jboss 5.0.1-GA.
J'effectue le tutoriel : http://www.netbeans.org/kb/55/ejb30-jboss.html.
J'ai un message driven Bean :
J'ai aussi un SessionBean For Entity Class:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 package ejb; import javax.annotation.Resource; import javax.ejb.ActivationConfigProperty; import javax.ejb.MessageDriven; import javax.ejb.MessageDrivenContext; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.ObjectMessage; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; /** * * @author cdi111 */ @MessageDriven(mappedName = "jms/NewMessage", activationConfig = { @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/mdb") }) public class NewMessageBean implements MessageListener { @Resource private MessageDrivenContext mdc; @PersistenceContext private EntityManager em; public NewMessageBean() { } public void onMessage(Message message) { ObjectMessage msg = null; try { if (message instanceof ObjectMessage) { msg = (ObjectMessage) message; NewsEntity e = (NewsEntity) msg.getObject(); save(e); } } catch (JMSException e) { e.printStackTrace(); mdc.setRollbackOnly(); } catch (Throwable te) { te.printStackTrace(); } } public void save(Object object) { em.persist(object); } }
Le MDB (message driven Bean) est utilisé dans une servlet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 package ejb; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; /** * * @author cdi111 */ @Entity public class NewsEntity implements Serializable { private static final long serialVersionUID = 1L; @Id // GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String title; private String body; public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Override public int hashCode() { int hash = 0; hash += (getId() != null ? getId().hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof NewsEntity)) { return false; } NewsEntity other = (NewsEntity) object; if ((this.getId() == null && other.getId() != null) || (this.getId() != null && !this.id.equals(other.id))) { return false; } return true; } @Override public String toString() { return "ejb.NewsEntity[id=" + getId() + "]"; } /** * @return the title */ public String getTitle() { return title; } /** * @param title the title to set */ public void setTitle(String title) { this.title = title; } /** * @return the body */ public String getBody() { return body; } /** * @param body the body to set */ public void setBody(String body) { this.body = body; } }
Lorsque je lance l'application, Jboss AS affiche l'erreur mdb not bound.
La servlet ListNews :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 14:46:52,739 ERROR [JmsActivation] Unable to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@487024(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@122a4a8 destination=queue/mdb destinationType=javax.jms.Queue tx=true durable=false reconnect=10 provider=java:/DefaultJMSProvider user=null maxMessages=1 minSession=1 maxSession=15 keepAlive=60000 useDLQ=true DLQHandler=org.jboss.resource.adapter.jms.inflow.dlq.GenericDLQHandler DLQJndiName=queue/DLQ DLQUser=null DLQMaxResent=5) javax.naming.NameNotFoundException: mdb not bound at org.jnp.server.NamingServer.getBinding(NamingServer.java:771) at org.jnp.server.NamingServer.getBinding(NamingServer.java:779) at org.jnp.server.NamingServer.getObject(NamingServer.java:785) at org.jnp.server.NamingServer.lookup(NamingServer.java:443) at org.jnp.server.NamingServer.lookup(NamingServer.java:399) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:682) at javax.naming.InitialContext.lookup(InitialContext.java:392) at org.jboss.util.naming.Util.lookup(Util.java:222) at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupDestination(JmsActivation.java:464) at org.jboss.resource.adapter.jms.inflow.JmsActivation.setup(JmsActivation.java:352) at org.jboss.resource.adapter.jms.inflow.JmsActivation.handleFailure(JmsActivation.java:292) at org.jboss.resource.adapter.jms.inflow.JmsActivation$SetupActivation.run(JmsActivation.java:733) at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:213) at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) 14:47:03,238 INFO [JmsActivation] Attempting to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@487024(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@122a4a8 destination=queue/mdb destinationType=javax.jms.Queue tx=true durable=false reconnect=10 provider=java:/DefaultJMSProvider user=null maxMessages=1 minSession=1 maxSession=15 keepAlive=60000 useDLQ=true DLQHandler=org.jboss.resource.adapter.jms.inflow.dlq.GenericDLQHandler DLQJndiName=queue/DLQ DLQUser=null DLQMaxResent=5) 14:47:03,253 ERROR [JmsActivation] Unable to reconnect org.jboss.resource.adapter.jms.inflow.JmsActivationSpec@487024(ra=org.jboss.resource.adapter.jms.JmsResourceAdapter@122a4a8 destination=queue/mdb destinationType=javax.jms.Queue tx=true durable=false reconnect=10 provider=java:/DefaultJMSProvider user=null maxMessages=1 minSession=1 maxSession=15 keepAlive=60000 useDLQ=true DLQHandler=org.jboss.resource.adapter.jms.inflow.dlq.GenericDLQHandler DLQJndiName=queue/DLQ DLQUser=null DLQMaxResent=5) javax.naming.NameNotFoundException: mdb not bound at org.jnp.server.NamingServer.getBinding(NamingServer.java:771) at org.jnp.server.NamingServer.getBinding(NamingServer.java:779) at org.jnp.server.NamingServer.getObject(NamingServer.java:785) at org.jnp.server.NamingServer.lookup(NamingServer.java:443) at org.jnp.server.NamingServer.lookup(NamingServer.java:399) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:682) at javax.naming.InitialContext.lookup(InitialContext.java:392) at org.jboss.util.naming.Util.lookup(Util.java:222) at org.jboss.resource.adapter.jms.inflow.JmsActivation.setupDestination(JmsActivation.java:464) at org.jboss.resource.adapter.jms.inflow.JmsActivation.setup(JmsActivation.java:352) at org.jboss.resource.adapter.jms.inflow.JmsActivation.handleFailure(JmsActivation.java:292) at org.jboss.resource.adapter.jms.inflow.JmsActivation$SetupActivation.run(JmsActivation.java:733) at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:213) at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:260) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) 14:47:05,175 WARN [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container 14:47:05,175 WARN [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container 14:47:05,175 WARN [InterceptorRegistry] applicable interceptors is non-existent for public void ejb.NewsEntityFacade.edit(ejb.NewsEntity) 14:47:05,190 WARN [InterceptorRegistry] applicable interceptors is non-existent for public ejb.NewsEntity ejb.NewsEntityFacade.find(java.lang.Object) 14:47:05,237 WARN [InterceptorRegistry] applicable interceptors is non-existent for public java.util.List ejb.NewsEntityFacade.findAll() 14:47:05,237 WARN [InterceptorRegistry] applicable interceptors is non-existent for public void ejb.NewsEntityFacade.create(ejb.NewsEntity) 14:47:05,253 WARN [InterceptorRegistry] applicable interceptors is non-existent for public void ejb.NewsEntityFacade.remove(ejb.NewsEntity) 14:47:05,253 WARN [InterceptorRegistry] applicable interceptors is non-existent for public void ejb.NewsEntityFacade.edit(ejb.NewsEntity) 14:47:05,737 WARN [InterceptorRegistry] applicable interceptors is non-existent for public ejb.NewsEntity ejb.NewsEntityFacade.find(java.lang.Object) 14:47:05,737 WARN [InterceptorRegistry] applicable interceptors is non-existent for public java.util.List ejb.NewsEntityFacade.findAll() 14:47:05,753 WARN [InterceptorRegistry] applicable interceptors is non-existent for public void ejb.NewsEntityFacade.create(ejb.NewsEntity) 14:47:05,753 WARN [InterceptorRegistry] applicable interceptors is non-existent for public void ejb.NewsEntityFacade.remove(ejb.NewsEntity) 14:47:10,221 ERROR [STDERR] javax.naming.NameNotFoundException: mdb not bound 14:47:10,221 ERROR [STDERR] at org.jnp.server.NamingServer.getBinding(NamingServer.java:771) 14:47:10,221 ERROR [STDERR] at org.jnp.server.NamingServer.getBinding(NamingServer.java:779) 14:47:10,221 ERROR [STDERR] at org.jnp.server.NamingServer.getObject(NamingServer.java:785) 14:47:10,221 ERROR [STDERR] at org.jnp.server.NamingServer.lookup(NamingServer.java:443) 14:47:10,221 ERROR [STDERR] at org.jnp.server.NamingServer.lookup(NamingServer.java:399) 14:47:10,237 ERROR [STDERR] at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722) 14:47:10,237 ERROR [STDERR] at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:682) 14:47:10,237 ERROR [STDERR] at javax.naming.InitialContext.lookup(InitialContext.java:392) 14:47:10,237 ERROR [STDERR] at web.PostMessage.processRequest(PostMessage.java:53) 14:47:10,237 ERROR [STDERR] at web.PostMessage.doGet(PostMessage.java:114) 14:47:10,237 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 14:47:10,237 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 14:47:10,237 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 14:47:10,237 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 14:47:10,237 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 14:47:10,237 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 14:47:10,237 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 14:47:10,237 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) 14:47:10,237 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 14:47:10,237 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) 14:47:10,237 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) 14:47:10,237 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) 14:47:10,237 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) 14:47:10,237 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 14:47:10,237 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 14:47:10,237 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) 14:47:10,237 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 14:47:10,237 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) 14:47:10,237 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) 14:47:10,237 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601) 14:47:10,237 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 14:47:10,237 ERROR [STDERR] at java.lang.Thread.run(Thread.java:619)
La servlet PostMessage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 package web; import ejb.NewsEntity; import ejb.NewsEntityFacadeLocal; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.ejb.EJB; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author cdi111 */ public class ListNews extends HttpServlet { @EJB private NewsEntityFacadeLocal newsEntityFacade; /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet ListNews</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet ListNews at " + request.getContextPath() + "</h1>"); javax.naming.Context c; try { c = new javax.naming.InitialContext(); newsEntityFacade = (NewsEntityFacadeLocal) c.lookup("Projet_Jboss/NewsEntityFacade/local"); } catch (NamingException ex) { Logger.getLogger(ListNews.class.getName()).log(Level.SEVERE, null, ex); } List news = newsEntityFacade.findAll(); for (Iterator it = news.iterator(); it.hasNext();) { NewsEntity elem = (NewsEntity) it.next(); out.println(" <b>" + elem.getTitle() + " </b><br />"); out.println(elem.getBody() + "<br /> "); } out.println("<a href='PostMessage'>Add new message</a>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> }
Ma question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135 : package web; import ejb.NewsEntity; import java.io.IOException; import java.io.PrintWriter; import java.util.Queue; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.ObjectMessage; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; import javax.jms.QueueSession; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author cdi111 */ public class PostMessage extends HttpServlet { /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); String title = request.getParameter("title"); String body = request.getParameter("body"); if ((title != null) && (body != null)) { Queue queue = null; QueueConnection connection = null; QueueSession session = null; MessageProducer messageProducer = null; try { InitialContext ctx = new InitialContext(); queue = (Queue) ctx.lookup("queue/mdb"); QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup("ConnectionFactory"); connection = factory.createQueueConnection(); session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE); messageProducer = session.createProducer((Destination) queue); ObjectMessage message = session.createObjectMessage(); // here we create a NewsEntity, that will be sent in JMS message NewsEntity e = new NewsEntity(); e.setTitle(title); e.setBody(body); message.setObject(e); messageProducer.send(message); messageProducer.close(); connection.close(); response.sendRedirect("ListNews"); } catch (JMSException ex) { ex.printStackTrace(); } catch (NamingException ex) { ex.printStackTrace(); } } PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet PostMessage</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet PostMessage at " + request.getContextPath() + "</h1>"); out.println("<form>"); out.println("Title: <input type='text' name='title'><br/>"); out.println("Message: <textarea name='body'></textarea><br/>"); out.println("<input type='submit'><br/>"); out.println("</form>"); out.println("</body>"); out.println("</html>"); } finally { out.close(); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> }
J'ai deux fichiers xml "jboss4-netbeans-destinations-service.xml" dans Netbeans (1 dans Entreprise Application, l'autre dans le module ejb) et un autre fichier xml situé dans le Serveur/default/deploy/messaging nommé " destinations-service.xml". Lequel faut il modifier ? Et à quoi sert l'un et l'autre ?
jboss4-netbeans-destinations-service.xml (dans Entreprise application et dans le module ejb)
destinations-service.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <?xml version="1.0" encoding="UTF-8"?> <server/>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <?xml version="1.0" encoding="UTF-8"?> <!-- Messaging Destinations deployment descriptor. $Id: destinations-service.xml 81998 2008-12-03 06:46:29Z scott.stark@jboss.org $ --> <server> <!-- The Default Dead Letter Queue. This destination is a dependency of an EJB MDB container. --> <mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=DLQ" xmbean-dd="xmdesc/Queue-xmbean.xml"> <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends> <depends>jboss.messaging:service=PostOffice</depends> </mbean> <!-- The Default Expiry Queue. --> <mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=ExpiryQueue" xmbean-dd="xmdesc/Queue-xmbean.xml"> <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends> <depends>jboss.messaging:service=PostOffice</depends> </mbean> </server>
Partager