Today I would like to share about one of the less used but effective tool SQLJMSAdmin that is shipped by Oracle along with ATG install.
How does it help?
There is a need to administer and monitor JMS messages once you begin using SQL JMS Provider in your application. Since SQL JMS stores message states in database, you have two choices:
if you look at Fig2, you can see choices to move messages from let's say a DeadLetterQueue to a Normal Queue like "SubmitToOMS" to be retried.
How does it help?
There is a need to administer and monitor JMS messages once you begin using SQL JMS Provider in your application. Since SQL JMS stores message states in database, you have two choices:
- Use DML statements as specified in documentation to query message build up or
- Use SQLJMSAdmin, a browser based administration tool for SQL JMS
How to configure?
- If your application server
- Jboss: Modify <ATG_INSTALL_FOLDER>\SQLJMSAdmin\j2ee-apps\sqlJmsAdmin\ejbModule\META-INF\jboss.xml with appropriate Core datasource (same as Order repository DataSource)
- Weblogic: Modify all enterprise bean definitions in file <ATG_INSTALL_FOLDER>\SQLJMSAdmin\j2ee-apps\sqlJmsAdmin\ejbModule\META-INF\weblogic-ejb-jar.xml to include Core datasource, for example
- You need to add "SQLJMSAdmin" to runAssembler task so that it is included in the ear file
...
<weblogic-enterprise-bean>
<ejb-name>DMSTopicSubscription</ejb-name>
<reference-descriptor>
<resource-description>
<res-ref-name>jdbc/datasource</res-ref-name>
<jndi-name>atg_core</jndi-name>
</resource-description>
</reference-descriptor>
<enable-call-by-reference>True</enable-call-by-reference>
</weblogic-enterprise-bean>
...
How to use it?
Once the ear is built including SQLJMSAdmin module, you can access the administration tool at http://<host>:<port>/sqlJmsAdmin.
When prompted for credentials, use the same credentials as in Dynamo Administration Tool. Now you access to monitor message build up
![]() |
Fig 2: Messages in a Queue |
if you look at Fig2, you can see choices to move messages from let's say a DeadLetterQueue to a Normal Queue like "SubmitToOMS" to be retried.
Hi This is vinodh
ReplyDelete\SQLJMSAdmin\j2ee-apps\sqlJmsAdmin\ejbModule\META-INF\jboss.xml file.
My jboss.xml looks like this
jdbc/dataSource
java:/commprod_ds
I included the SQLJMS ADMIN module in the build script and restarted the server . but when i try to accessing the "http://localhost:8180/sqlJmsAdmin/" (Note : 8180 is the production port i have configured) . I get the following error
java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling [appName:commprod, moduleName:ejbModule, distinctName:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@1c3a2f66
at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:727)
at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:116)
at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:183)
at org.jboss.ejb.client.EJBInvocationHandler.sendRequestWithPossibleRetries(EJBInvocationHandler.java:253)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:198)
at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:181)
at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:144)
at com.sun.proxy.$Proxy36.create(Unknown Source)
at atg.sqljmsadmin.taglib.DMSAdminTag.doStartTag(DMSAdminTag.java:232)
at org.apache.jsp.main_jsp._jspService(main_jsp.java:3030)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:69)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:365)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:309)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:242)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920)
at java.lang.Thread.run(Thread.java:724)
Please share your thougts...
jboss.xml
ReplyDeletejdbc/dataSource
java:/commprod_ds
This comment has been removed by the author.
ReplyDeleteHi this is Pavan. How is the clients created. My application has around 4 clients. And in I I deleted the topics that are not needed. But on every restart they appear back again. Can you tell me how I can permanently remove those topics from being created
ReplyDelete