Problem Configuring JMS Error Queue
Domain configuration : one adminServer, One cluster, 2 managedservers in cluster
Two distibuted Queues: InboundQueue, Error Queue
I want to redirect any bad message from InboundQueue to ErrorQueue and discard it.
It worked fine for 4 yrs in Wls 8.1 ( did configured in 8.1)..
now i upgrde to wls 10.1 and i did same configuration but InboundQueue is not redirecting to Errorqueue..
Dont know where i am missing..
here is the config.xml entry and jms/JmModule.xml files..
config.xml entry_
<jms-system-resource>
<name>JmsModule</name>
<target>cluster1</target>
<sub-deployment>
<name>subdeployment1</name>
<target>JmsServer1,JmsServer2</target>
</sub-deployment>
<descriptor-file-name>jms/JmsModule-jms.xml</descriptor-file-name>
</jms-system-resource>
JmsModule.xml_
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-jms xmlns="http://www.bea.com/ns/weblogic/90" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xsi:schemaLocation="http://www.bea.com/ns/weblogic/920 http://www.bea.com/ns/weblogic/920.xsd">
<uniform-distributed-queue name="ErrorQueue">
<sub-deployment-name>subdeployment1</sub-deployment-name>
<delivery-params-overrides>
<delivery-mode>Non-Persistent</delivery-mode>
<time-to-deliver>-1</time-to-deliver>
<time-to-live>-1</time-to-live>
<priority>-1</priority>
<redelivery-delay>-1</redelivery-delay>
</delivery-params-overrides>
<delivery-failure-params>
<redelivery-limit>0</redelivery-limit>
</delivery-failure-params>
<jndi-name>ErrorQueue</jndi-name>
<load-balancing-policy>Round-Robin</load-balancing-policy>
<forward-delay>-1</forward-delay>
</uniform-distributed-queue>
<uniform-distributed-queue name="InboundQueue">
<sub-deployment-name>subdeployment1</sub-deployment-name>
<delivery-params-overrides>
<delivery-mode>Persistent</delivery-mode>
<time-to-deliver>10</time-to-deliver>
<time-to-live>10</time-to-live>
<priority>2</priority>
<redelivery-delay>10</redelivery-delay>
</delivery-params-overrides>
<delivery-failure-params>
<error-destination>ErrorQueue</error-destination>
<redelivery-limit>1</redelivery-limit>
<expiration-policy>Redirect</expiration-policy>
</delivery-failure-params>
<jndi-name>InboundQueue</jndi-name>
<load-balancing-policy>Round-Robin</load-balancing-policy>
<forward-delay>10</forward-delay>
</uniform-distributed-queue>
</weblogic-jms>
Any help
Thanks
ksr
Are you still having a problem? If so, I recommend trying to simplify the reproducer by removing the "time-to-deliver", "redelivery-delay", and "time-to-live" settings.
<time-to-deliver>10</time-to-deliver>
<time-to-live>10</time-to-live>
<redelivery-delay>10</redelivery-delay>
Note that these are all set to a very small value (10 milliseconds), and that the message will expire before it can be delivered or redelivered. The delivery delay is 10 millis, so by the time the delivery delay completes, the time-to-live will have passed -- furthermore, if there was no delivery delay, the redelivery delay is at 10 millis -- so by the time the redel occurs the time-to-live expires).
Tom
Similar Messages
-
How to configure a error queue for weblogic jms topic
Hi guys.
I want to configure a error queue for weblogic jms topic. Wanted: The message goes to error destination when messages have expired or reached their redelivery limit.
1. using jms transport configure proxy service:
Retry Count :3
Retry Interval:10
Error Destination: ErrorTopic
Expiration Policy: Redirect
I tried use the proxy service to consume message from the jms topic . and generation an error in the proxy message flow. But the message didn't goes into the error topic.
Any suggestions for this topic? Can anyone provide some helps or any useful links.
Thanks in advance.
MingzhuangMingzhuang
I want to configure a error queue for weblogic jms topic. Wanted: The message goes to error destination when messages have expired or reached their redelivery limit.
1. using jms transport configure proxy service:
Retry Count :3
Retry Interval:10
Error Destination: ErrorTopic
Expiration olicy: RedirectUnlike File/SFTP, JMS proxy service definition does not have the concept of Error Destination. To accomplish similar functionality go to JMSQ on (for which proxy is configured) server console (http://localhost:7001/console) and configure the Error Destination. Following URL will help in how to configure JMS Q.
http://edocs.bea.com/wls/docs103/ConsoleHelp/taskhelp/jms_modules/queues/ConfigureQueues.html
http://edocs.bea.com/wls/docs103/ConsoleHelp/taskhelp/jms_modules/queues/ConfigureQueueDeliveryFailure.html
I tried use the proxy service to consume message from the jms topic . and generation an error in the proxy message flow. But the message didn't goes into the error topic.If every thing is configured as per above step, then the after retries, the weblogic server will put the message into JMS topic configured. Your proxy will receive from this topic.
Let me know if we are not on same page.
Cheers
Manoj -
Examples for JMS Error Queue implementation in BPEL
Hi ,
Please anyone provide me examples for JMS error queue implementaion in BPEL.
Regards
Narsi pHi Narsi p,
Please remember to mark answers accordingly... Helpful or correct, following the forum rules
https://forums.oracle.com/forums/ann.jspa?annID=330
Can you tell us more about what are you trying to achieve here?
If you are just trying to configure an error queue to put the messages that couldn't be delivered, you can do this in weblogic directly.
Configuring an Error Destination for Undelivered Messages
http://docs.oracle.com/cd/E17904_01/web.1111/e13727/manage_apps.htm#JMSPG254
Cheers,
Vlad -
Problem creating JMS Error Destination via Ant in WLS 8.1
We've got several JMS queues in our application. We create the server via Ant (using the wlconfig task).
All is well, the queues have been working fine, until we try to add an error destination queue (after several attempts to handle the message, it'll be sent to the error queue for later troubleshooting).
Here's an example of what we've got now:
<create type="JMSQueue" name="batchQueue" property="jmsqueue">
<set attribute="JNDIName" value="net.nike.cdm.batchQueue"/>
<set attribute="RedeliveryLimit" value="5"/>
</create>We create another queue to handle the errors, and then add an attribute to the first to point to the second:
<create type="JMSQueue" name="batchErrorQueue" property="batchErrorQueue">
<set attribute="JNDIName" value="net.nike.cdm.batchErrorQueue"/>
<set attribute="RedeliveryLimit" value="5"/>
</create>
<create type="JMSQueue" name="batchQueue" property="jmsqueue">
<set attribute="JNDIName" value="net.nike.cdm.batchQueue"/>
<set attribute="RedeliveryLimit" value="5"/>
<set attribute="ErrorDestination" value="${batchErrorQueue}"/>
</create>This seems logical, because if we do this same exact operation via the console, the config.xml goes from this:
<JMSQueue JNDIName="net.nike.cdm.batchQueue"
Name="batchQueue" RedeliveryLimit="5"/>to this:
<JMSQueue ErrorDestination="batchErrorQueue"
JNDIName="net.nike.cdm.batchQueue"
Name="batchQueue" RedeliveryLimit="5"/>
<JMSQueue JNDIName="net.nike.cdm.batchErrorQueue" Name="batchErrorQueue"/>The error we get when trying to do this via Ant is:
[wlconfig] A destination and its ErrorDestination must both be on the same JMS server. (The problematic destination is "batchQueue" on JMS server "cdmdomain"). Also, an ErrorDestination can not be null if the ExpirationPolicy for a destination is "redirect" and a destination can not specify itself as its ErrorDestination.Flipping on -verbose in Ant, the actual exception is:
[wlconfig] SET -mbean cdmdomain:Name=batchQueue,Type=JMSQueue -property ErrorDestination cdmdomain:Name=batchErrorQueue,Type=JMSQue
[wlconfig] A destination and its ErrorDestination must both be on the same JMS server. (The problematic destination is "batchQueue"
s its ErrorDestination.
[if] Error in class net.sf.antcontrib.logic.IfTask
BUILD FAILED
file:C:/viewstore/CDM_R6.5_Development/B2B_CDM/dev/build.xml:1399: Error invoking MBean command: java.lang.NullPointerException
at weblogic.ant.taskdefs.management.WLConfig.handleException(WLConfig.java:567)
at weblogic.ant.taskdefs.management.WLConfig.invokeCommand(WLConfig.java:381)
at weblogic.ant.taskdefs.management.WLConfig.invokeSetCommand(WLConfig.java:235)
at weblogic.ant.taskdefs.management.WLConfig.invokeCreateCommand(WLConfig.java:163)
at weblogic.ant.taskdefs.management.WLConfig.executeCommands(WLConfig.java:106)
at weblogic.ant.taskdefs.management.WLConfig.invokeCreateCommand(WLConfig.java:167)
at weblogic.ant.taskdefs.management.WLConfig.executeCommands(WLConfig.java:106)
at weblogic.ant.taskdefs.management.WLConfig.execute(WLConfig.java:89)
at org.apache.tools.ant.Task.perform(Task.java:341)
at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:117)
at org.apache.tools.ant.Task.perform(Task.java:341)
at net.sf.antcontrib.logic.IfTask.execute(Unknown Source)
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:324)
at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:147)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:193)
at org.apache.tools.ant.Task.perform(Task.java:341)
at org.apache.tools.ant.Target.execute(Target.java:309)
at org.apache.tools.ant.Target.performTasks(Target.java:336)
at org.apache.tools.ant.Project.executeTarget(Project.java:1339)
at org.apache.tools.ant.Project.executeTargets(Project.java:1255)
at org.apache.tools.ant.Main.runBuild(Main.java:609)
at org.apache.tools.ant.Main.start(Main.java:196)
at org.apache.tools.ant.Main.main(Main.java:235)So, my question is, what are we doing wrong? What IS the syntax to set an error destination for a JMS queue via Ant for WLS 8.1?
Any help would be greatly appreciated
Thanks,
Douglas BullardI get exactly the same problem - was a resolution to this issue found?
Thanks,
Richard Marriott
[email protected] -
Hello. I have problem after sending message to JMS queue. Message by log file sending is success. But Message don't put to queue and put to error queue.
Message don't put to queue in 25 % cases.
Speak please, what can be reasons what message put to error queue ?give me please need section link.
I closing the sender, session and connection in method destroy();
That class, That is EJB:
@Stateless(name = "BeanName", mappedName = "ejb.un.BeanName")
@Local(BeanLocal.class)
public class BeanName implements ReleaserLocal {
@PreDestroy
public void destroy() {
try {
jmsSender.close();
} catch (Exception ex) {
try {
jmsSession.close();
} catch (Exception ex) {
try {
jmsConnection.close();
} catch (Exception ex) {
private void sendMessage(String payload, String channel, long qId){
try {
jmsSender.send(message);
if (log.isDebugEnabled()) {
log.debug("message SEND");
I running this app from depployed in weblogic. -
Problems with JMS: Error JMS BEA-040368
Hi,
I have run into a problem using JMS on BEA. It appears to happen when we run huge amounts of messages through the queue (100 000+).
Once this error occurs, we cant get rid of it. Restarting server, re-dployment, nothing works. Every subsequent message sent to the JMS produces this error.
According to the error message, we have exceeded the maximum allowed transactions for the server, but how do we reset the transactions? And what is causing the error to appear in the first place? Somthing I forget to close or flush?
I have QueueConnection, QueueSession and QueueRecevier objects open for all transactions, and close them when the bean is destroyed. Should I rather create and close them for each transaction?
Here is the exception:
<15.jun.2005 kl 14.55 CEST> <Error> <JMS> <BEA-040368> <The following exception has occurred:
java.lang.RuntimeException: [EJB:010166]Error occurred while starting transaction: javax.transaction.SystemException: Exceeded maximum allowed transactions on server 'myserver'.
at weblogic.ejb20.internal.MDListener.perhapsBeginTransaction()V(MDListener.java:325)
at weblogic.ejb20.internal.MDListener.execute(Lweblogic.kernel.ExecuteThread; )V(MDListener.java:339)
at weblogic.ejb20.internal.MDListener.onMessage(Ljavax.jms.Message; )V(MDListener.java:262)
at weblogic.jms.client.JMSSession.onMessage(Ljavax.jms.MessageListener;Lweblogic.jms.common.MessageImpl; )V(JMSSession.java:2678)
at weblogic.jms.client.JMSSession.execute(Lweblogic.kernel.ExecuteThread; )V(JMSSession.java:2598)
at weblogic.kernel.ExecuteThread.execute(Lweblogic.kernel.ExecuteRequest; )V(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:178)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread; )V(Unknown Source)
>Developments
It turned out that my "client" used: this.queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
While the "server" used: this.queueSession = queueConnection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
Now changing both sessions to use transactions (createQueueSession(true, Session.AUTO_ACKNOWLEDGE)) and fortifying the use of QueueSession.commit() when sending and receiving messages seemed to solve the problem... for a while.
After a few new tests the problem appeared again, this time on the "client" side. It is obvious that transaction are somehow not commited correctly even though Session.commit() is called after each and every message is sent and received.
Btw. To make the app "clean up" hanging transactions faster you can change the value in the console at:
Mydomain --> Services --> JTA --> Abandon Timeout Seconds
weblogic.jms.common.TransactionRolledBackException: Exceeded maximum allowed transactions on server 'myserver':error beginning transacted session's internal transaction
at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:137)
at weblogic.jms.dispatcher.DispatcherImpl_814_WLStub.dispatchSyncNoTranFuture(Unknown Source)
at weblogic.jms.dispatcher.DispatcherWrapperState.dispatchSyncNoTran(DispatcherWrapperState.java:472)
at weblogic.jms.client.JMSProducer.sendInternal(JMSProducer.java:391)
at weblogic.jms.client.JMSProducer.send(JMSProducer.java:186)
at no.nrk.returia.test.TestSMSInAdapter.send(TestSMSInAdapter.java:133)
at no.nrk.returia.test.TestSMSInAdapter.main(TestSMSInAdapter.java:206) -
Example using of getMessage(s) with JMS error queues?
Hi,
I'm cobbling together various tools for easier management of replaying messages left in error queues and the likes, and whilst I've got messages being moved around the place on demand, I can't make any progress using getMessage() and getMessages() to print out vital statistics of a message / all the messages in a queue, including hopefully ripping out excerts of the XML payload in them. Can someone provide / point me to an example of these being in use? I can get a successful execution of getMessages() but am usure what to really do next with the object returned, how to iterate through and such.
Thanks
Chris.Hi Chris,
There are open source solutions for message management. In particular, you might want to investigate Hermes:
http://blogs.oracle.com/jamesbayer/2008/01/hermes_jms_open_source_jms_con.html
As for browsing messages via getMessages(), here's a code snippet. Note that one should never attempt to get too many messages at a time via "getNext()" -- instead call getNext() multiple times. Otherwise, if there are too many messages, the client or server might run out of memory.
# create a cursor to get all the messages in the queue
# by passing ‘true’ for selector expression,
# and long value for cursor timeout
cursor1=cmo.getMessages(‘true’,9999999)
# get the next 5 messages starting from the cursor’s
# current end position
# this will adjust the cursor’s current start position and
# end position “forwards” by 5
msgs = cmo.getNext(cursor1, 5)
# print all the messages’ contents
print msgs
# get 3 messages upto the cursor’s current start position
# this will adjust the cursor’s current start and end position backwards by 3
# this will the current position of the message by 1
msgs = cmo.getPrevious(cursor1, 3)
# print all the messages’ contents
print msgs
Finally, here's code based on public APIs that can help with exporting messages to a file. It uses Java, not WLST. I haven't tested it personally. I'm not sure if there's away to do this in WLST.
* pseudo code for JMS Message Export operation based on
* current implementation in the Administration Console
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.io.Writer;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import weblogic.apache.xerces.dom.DocumentImpl;
import weblogic.apache.xml.serialize.OutputFormat;
import weblogic.apache.xml.serialize.XMLSerializer;
import weblogic.management.runtime.JMSDestinationRuntimeMBean;
import weblogic.management.runtime.JMSDurableSubscriberRuntimeMBean;
import weblogic.management.runtime.JMSMessageManagementRuntimeMBean;
import javax.management.openmbean.CompositeData;
import weblogic.jms.extensions.JMSMessageInfo;
import weblogic.jms.extensions.WLMessage;
import weblogic.messaging.kernel.Cursor;
public void exportMessages(
String fileName,
JMSDestinationRuntimeMBean destination,
/* or JMSDurableSubscriberRuntimeMBean durableSubscriber */,
String messageSelector) throws Exception {
BufferedWriter bw = null;
try {
File selectedFile = new File(file);
if (destination == null /* or durableSubscriber == null */) {
throw new IllegalArgumentException("A valid destination runtime or durableSubscriber runtime mbean must be specified");
JMSMessageManagementRuntimeMBean runtime = (JMSMessageManagementRuntimeMBean) destination /* durableSubscriber */;
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8"));
String xmlDeclaration = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
String exportStart = "<JMSMessageExport>";
final String exportEnd = "</JMSMessageExport>";
final String indent = " ";
bw.write(xmlDeclaration);
bw.newLine();
bw.write(exportStart);
bw.newLine();
bw.newLine();
bw.write(indent);
CompositeData[] messageInfos = null;
OutputFormat of = new OutputFormat();
of.setIndenting(true);
of.setLineSeparator("\n"+indent);
of.setOmitXMLDeclaration(true);
XMLSerializer ser = getXMLSerializer(bw, of);
String cursor = JMSUtils.getJMSMessageCursor(runtime, selector,0);
while ((messageInfos = runtime.getNext(cursor,new Integer(20))) != null) {
for (int i = 0; i < messageInfos.length; i++) {
JMSMessageInfo mhi = new JMSMessageInfo(messageInfos);
Long mhiHandle = mhi.getHandle();
CompositeData m = runtime.getMessage(cursor, mhiHandle);
// need to get the message with body
JMSMessageInfo mbi = new JMSMessageInfo(m);
WLMessage message = mbi.getMessage();
ser.serialize(message.getJMSMessageDocument());
messageInfos[i] = null;
bw.newLine();
bw.write(exportEnd);
bw.flush();
bw.close();
runtime.closeCursor(cursor);
LOG.success("jms exportmessage success");
} catch (Exception e) {
try {
if(bw != null)
bw.close();
} catch (IOException ioe) { }
LOG.error(e);
LOG.error("jms exportmessage error");
throw(e);
LOG.success("jms exportmessage success");
private XMLSerializer getXMLSerializer(
Writer writer,
OutputFormat of) {
return new XMLSerializer(writer, of) {
protected void printText(
char[] chars,
int start,
int length,
boolean preserveSpace,
boolean unescaped) throws IOException {
super.printText(chars,start,length,true,unescaped);
protected void printText(
String text,
boolean preserveSpace,
boolean unescaped ) throws IOException {
super.printText(text,true,unescaped);
public static String getJMSMessageCursor(
JMSMessageManagementRuntimeMBean runtime,
String selector,
int cursorTimeout) throws weblogic.management.ManagementException
return runtime.getMessages(
selector,
new Integer(cursorTimeout),
new Integer(Cursor.ALL));
Hope this helps,
Tom -
JMS Error destination..
Hi,
I am developing a JMS application where i am processing message in a Queue and configured redelivery delay and redelivery limit. When the maximum redelivery limit has reached, i will move the message to an error destination which is again a Queue. I can send an email to the administartor with the message information indicating that the processing for the message has failed. But the requirment is, the administrator wants to view the message from the persistent store and resubmit the message. Is it possible? If that is the case what can be value for time-to-live for the message? I am using ServiceBus 10.3 and using the underlying weblogic server as JMS provider. Besides, i have a question on the relationship between redelivery delay, redelivery limit and time-to-live override. When i tested, if time-to-live is less than the redeliverylimit*redelivery delay, then will the message be deleted and the redelivery limit(number of retries) is not taking into effect. But if time-to-live is greater than also the message is deleted after maximum retry means time-to-live doesn't have effect. This means i am i right to say, if i specify time-to-live and there is no need to specify redeliverylimit and redelivery delay. If that is the case on what basis, the retry is made?
Thanks in advance for your replies,
SamHi,
I am using ServiceBus 10.3 and using the underlying weblogic server as JMS provider. I think OSB tends to decorate JMS messages with its own private information, so I don't know if it can support arbitrarily moving them between destinations. You may be better off posting to an OSB specific forum.
But the requirment is, the administrator wants to view the message from the persistent store and resubmit the message. Is it possible? That said, you can view, delete, move, and file import/export WebLogic JMS messages using the message management screens on the console. If you need a more sophisticated capability than the console provides, it is possible to write Java or WLST program's for the purpose.
If you're interested in scripting, the following might be enough to get you started:
For scripting and tracing examples, see the July 29th and August 10th 2009 newsgroup post with subject "Example using of getMessage(s) with JMS error queues?" [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3657916] and the June 10th 2009 newsgroup post with subject "JMSDestinationRuntimeMBean - possible STATE values " [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3531603 ]. Also take a look at the +Sept 23 2009 newsgroup posts with subject "Enable JMS - Queue/Topic Trace on console"+ [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3782486].
+WARNING: Exporting too many messages at a time can cause out-of-memory errors.+
Besides, i have a question on the relationship between redelivery delay, redelivery limit and time-to-live override. When i tested, if time-to-live is less than the redeliverylimit*redelivery delay, then will the message be deleted and the redelivery limit(number of retries) is not taking into effect. But if time-to-live is greater than also the message is deleted after maximum retry means time-to-live doesn't have effect. This means i am i right to say, if i specify time-to-live and there is no need to specify redeliverylimit and redelivery delay. If that is the case on what basis, the retry is made?By definition, an expired message is automatically deleted -- no matter what the delivery count is. If you want expired messages to be automatically redirected to a destinatin's error destination you can configure an "expiration policy" of "redirect" on the destination.
Whether you want to use message expiration, redelivery limit, or redelivery delay very much depends on your specific use case.
-- Redelivery limits detect messages that are rolled back many times by receiving applications (rollbacks can occur due to any number of reasons, such as database failure, application bug, etc.)
-- Redelivery delays prevent rolled back messages from being immediately redelivered. This helps prevent zooming up CPU usage to 100% with tight loop retries of processing a problem message, assumes that whatever condition caused the original rollback is temporary, and assumes that if the message is immediately redelivered that this is too soon for the problem condition to have cleared up.
-- Expiration detects if a message has been sitting around for a long time. It doesn't detect whether the application has attempted to process the message...
In general, if you are coding a new application, it is sometimes helpful to avoid error destinations. Instead, let your application decide what to do with problem messages (such as queue them to another destination). This helps your application provide more customizable behavior.
Hope this helps,
Tom
PS Especially for developers new to WebLogic JMS, I highly recommend purchasing a copy of the book "Professional Oracle WebLogic". In addition, I recommend reading the new "Best Practices" chapter of the JMS configuration guide, and the new "Tuning Checklist" in the JMS chapter of the Performance and Tuning guide. These new sections are in the 10.3.2 documentation. -
Move to error queue after certain redelivery limit
Hi,
I am newbie to Weblogic. I am currently using Weblogic8.1.4.
I have written an MDB say mdbx which listens on a specific queue say QA, once it receives a message it will send this message to another queue QB. I have configured the queue QA such that it will try to redeliver the message 3 times to QB, if it fails in its first attempt. I have also configured an error queue to which the message should finally be placed when all the 3 attempts fails.
My problem is, i find the redelivery limit and error queue i have configured for queue QA doesn't take effect. Please help me to resolve this.
More Info:
I am trying to send message from mdbx on the onMessage() method.
Thanks and Regards
A.SathishKumarPlease refer : http://www.javaoracleblog.com/java/How_to_set_minimumDelayBetweenMessages_for_delay_between_messages_for_JCA_adapters.jsf
-
Problem: sending JMS message in other oc4j
I have two app server instances " OC4J (1) " and " OC4J (2) ". (snandalone 10.1.3.0.0 - Developer Preview 3 (build 041119.0001.2385)). The containers work on Windows2000 in different machines connected by the LAN.
OC4J (1):
I have J2ee of the application [app(1)] (ex. Servlet (1) or MDB (1)) in OC4J (1).
OC4J (2):
I have J2ee of the application [app(2)] deploy in OC4J (2) [included Servlet (2) or MDB (2)] . The Servlet (2), or MDB (2) - empty stub, for example code Servlet2:
package mypackage;
import javax.servlet. *;
import javax.servlet.http. *;
import java.io. PrintWriter;
import java.io. IOException;
public class Servlet1 extends HttpServlet
private static final String CONTENT_TYPE = " text/html; charset=windows-1251 ";
public void init (ServletConfig config) throws ServletException
super.init (config);
public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
response.setContentType (CONTENT_TYPE);
PrintWriter out = response.getWriter ();
out.println (" < html > ");
out.println (" < head > < title > Servlet1 < /title > < /head > ");
out.println (" < body > ");
out.println (" < p > The servlet has received a GET. This is the reply. </p > ");
out.println (" < /body > < /html > ");
out.close ();
I have configuration JMS (2) Queue in jms.xml on OC4J (2):
< jms-server...... port = "9127"
< queue name = " Demo Queue " location = "jms/demoQueue" > <description> A dummy queue </description> </queue>
< queue-connection-factory name = "jms/QueueConnectionFactory" location = "jms/QueueConnectionFactory" / >
</jms-server>
It JMS (2) Queue already is present in an OC4J 10.1.3 version.
My task:
The J2ee application (1) (ex. Servlet (1)) on OC4J (1) it is necessary to receive connection with JMS (2) (on remote OC4J (2)).
Variant 1: a code in Servlet (1):
Hashtable env=new Hashtable (8);
env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2)/app(2):23792 ");
env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
env.put (Context. SECURITY_PRINCIPAL, "admin");
env.put (Context. SECURITY_CREDENTIALS, "admin");
env.put ("dedicated.connection", "true");
InitialContext ic = new InitialContext (env);
QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
ic.lookup ("jms/QueueConnectionFactory");
QueueConnection connection = connectionFactory.createQueueConnection ();
connection.start ();
queueSession =
connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
Queue queue = (Queue) ic.lookup ("jms/demoQueue");
ic.close ();
while (true)
// - send in JMS (2)
Problem:
The Servlet (1) [in oc4j (1)] established JMS connection with oc4j (2) and begins to pass the messages [in JMS Queue (2)].
The Oc4j (2) creates some system thread for this JMS connection.
If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
Saw if this situation repeats some times that amount of the system thread in oc4j (2) is grow.
To me has answered:
In 10.1.3, the supported connection path is through the Resource Adapter (using OracleASjms.rar). The Resource Adapter offers many benefits, including the removal of stale connection threads. You have configured your application to bypass the Resource Adapter and use a direct path to OC4J JMS. You will need to create a resource mapping from your OC4J JMS admin objects (queues, topics, and connection factories) to new Resource Adapter admin objects. You can find the details of how to do this in the documentation for OC4J 10g (10.1.3) Developer Preview 3 on OTN.
You can find the link to the documentation for OC4J DP3 here:
http: // www.oracle.com/technology/tech/java/oc4 j/1013/index.html
Then I have tried Variant 2:
I need to receive connection with remote JMS (2) via generic JMS resource adapter (OracleAS Jms).
In OC4J (2), it is necessary Ñonfigure the generic JMS resource adapter (OracleAS Jms) to work with Queue "jms/demoQueue".
According to the documentation Oracle ® Containers for J2EE Services Guide10g Release 2 (10.1.3) and example
http: // www.oracle.com/technology/tech/java/oc4 j/1013/howtos/how-to-jca-intro/doc/how- to-jca-intro.html anything it is not necessary to do.
Note that if you use the generic JMS resource adapter in an OC4J 10.1.3 version that is newer than the OC4J 10.0.3 Developer Preview 2, you can skip. In OC4J 10.1.3 it is a step is already made.
Code in Servlet (1):
Hashtable env=new Hashtable (8);
env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2) /app (2):23792 ");
env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
env.put (Context. SECURITY_PRINCIPAL, "admin");
env.put (Context. SECURITY_CREDENTIALS, "admin");
env.put ("dedicated.connection", "true");
InitialContext ic = new InitialContext (env);
QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
ic.lookup (" java:comp/resource/oc4jjms/jms/QueueCon nectionFactory ");
QueueConnection connection = connectionFactory.createQueueConnection ();
connection.start ();
queueSession =
connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
Queue queue = (Queue) ic.lookup (" java:comp/resource/oc4jjms/jms/demoQueu e ");
ic.close ();
while (true)
// - send in JMS (2)
This code works.
But!!!!!!
The problem - removal of stale connection threads in OC4J (2) instances has not solve. If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
How to me to write a code of connection with JMS (2) in Servlet (1), that Resource Adapter (in OC4J (2)) the removal of stale connection threads ???I have two app server instances " OC4J (1) " and " OC4J (2) ". (snandalone 10.1.3.0.0 - Developer Preview 3 (build 041119.0001.2385)). The containers work on Windows2000 in different machines connected by the LAN.
OC4J (1):
I have J2ee of the application [app(1)] (ex. Servlet (1) or MDB (1)) in OC4J (1).
OC4J (2):
I have J2ee of the application [app(2)] deploy in OC4J (2) [included Servlet (2) or MDB (2)] . The Servlet (2), or MDB (2) - empty stub, for example code Servlet2:
package mypackage;
import javax.servlet. *;
import javax.servlet.http. *;
import java.io. PrintWriter;
import java.io. IOException;
public class Servlet1 extends HttpServlet
private static final String CONTENT_TYPE = " text/html; charset=windows-1251 ";
public void init (ServletConfig config) throws ServletException
super.init (config);
public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
response.setContentType (CONTENT_TYPE);
PrintWriter out = response.getWriter ();
out.println (" < html > ");
out.println (" < head > < title > Servlet1 < /title > < /head > ");
out.println (" < body > ");
out.println (" < p > The servlet has received a GET. This is the reply. </p > ");
out.println (" < /body > < /html > ");
out.close ();
I have configuration JMS (2) Queue in jms.xml on OC4J (2):
< jms-server...... port = "9127"
< queue name = " Demo Queue " location = "jms/demoQueue" > <description> A dummy queue </description> </queue>
< queue-connection-factory name = "jms/QueueConnectionFactory" location = "jms/QueueConnectionFactory" / >
</jms-server>
It JMS (2) Queue already is present in an OC4J 10.1.3 version.
My task:
The J2ee application (1) (ex. Servlet (1)) on OC4J (1) it is necessary to receive connection with JMS (2) (on remote OC4J (2)).
Variant 1: a code in Servlet (1):
Hashtable env=new Hashtable (8);
env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2)/app(2):23792 ");
env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
env.put (Context. SECURITY_PRINCIPAL, "admin");
env.put (Context. SECURITY_CREDENTIALS, "admin");
env.put ("dedicated.connection", "true");
InitialContext ic = new InitialContext (env);
QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
ic.lookup ("jms/QueueConnectionFactory");
QueueConnection connection = connectionFactory.createQueueConnection ();
connection.start ();
queueSession =
connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
Queue queue = (Queue) ic.lookup ("jms/demoQueue");
ic.close ();
while (true)
// - send in JMS (2)
Problem:
The Servlet (1) [in oc4j (1)] established JMS connection with oc4j (2) and begins to pass the messages [in JMS Queue (2)].
The Oc4j (2) creates some system thread for this JMS connection.
If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
Saw if this situation repeats some times that amount of the system thread in oc4j (2) is grow.
To me has answered:
In 10.1.3, the supported connection path is through the Resource Adapter (using OracleASjms.rar). The Resource Adapter offers many benefits, including the removal of stale connection threads. You have configured your application to bypass the Resource Adapter and use a direct path to OC4J JMS. You will need to create a resource mapping from your OC4J JMS admin objects (queues, topics, and connection factories) to new Resource Adapter admin objects. You can find the details of how to do this in the documentation for OC4J 10g (10.1.3) Developer Preview 3 on OTN.
You can find the link to the documentation for OC4J DP3 here:
http: // www.oracle.com/technology/tech/java/oc4 j/1013/index.html
Then I have tried Variant 2:
I need to receive connection with remote JMS (2) via generic JMS resource adapter (OracleAS Jms).
In OC4J (2), it is necessary Ñonfigure the generic JMS resource adapter (OracleAS Jms) to work with Queue "jms/demoQueue".
According to the documentation Oracle ® Containers for J2EE Services Guide10g Release 2 (10.1.3) and example
http: // www.oracle.com/technology/tech/java/oc4 j/1013/howtos/how-to-jca-intro/doc/how- to-jca-intro.html anything it is not necessary to do.
Note that if you use the generic JMS resource adapter in an OC4J 10.1.3 version that is newer than the OC4J 10.0.3 Developer Preview 2, you can skip. In OC4J 10.1.3 it is a step is already made.
Code in Servlet (1):
Hashtable env=new Hashtable (8);
env.put (Context. PROVIDER_URL, " ormi: // host_OC4J (2) /app (2):23792 ");
env.put (Context. INITIAL_CONTEXT_FACTORY, " oracle.j2ee.rmi. RMIInitialContextFactory ");
env.put (Context. SECURITY_PRINCIPAL, "admin");
env.put (Context. SECURITY_CREDENTIALS, "admin");
env.put ("dedicated.connection", "true");
InitialContext ic = new InitialContext (env);
QueueConnectionFactory connectionFactory = (QueueConnectionFactory)
ic.lookup (" java:comp/resource/oc4jjms/jms/QueueCon nectionFactory ");
QueueConnection connection = connectionFactory.createQueueConnection ();
connection.start ();
queueSession =
connection.createQueueSession (false, Session. AUTO_ACKNOWLEDGE);
Queue queue = (Queue) ic.lookup (" java:comp/resource/oc4jjms/jms/demoQueu e ");
ic.close ();
while (true)
// - send in JMS (2)
This code works.
But!!!!!!
The problem - removal of stale connection threads in OC4J (2) instances has not solve. If the oc4j (1) lose network connection (example- break the cable) then created in oc4j (2) system thread is not destroyed.
How to me to write a code of connection with JMS (2) in Servlet (1), that Resource Adapter (in OC4J (2)) the removal of stale connection threads ??? -
How to configure JMS queue on OC4J server. Development in JDeveloper 10G
Hi there,
I have to configure a JMS for an Asynchronous process in my Application which will be running in Oracle 10G Application Server. Development Environment is Oracle JDeveloper 10G.
I am facing a problem on how to configure JMS queue.
Steps Followed are:
in the <JDevloperHome>/j2ee/home/config
1. Made the new queue and connection factory's JMS entry in jms.xml.
2. Specifed the queue in oc4j-connectors.xml.
3. played around with application.xml
and tried all combinations, but the message producer always failed to lookup the queue.
Need help on the steps to follow so that the producer can post the message in the queue.
Also please help how to configure the MDB to listen to the queue.
Thanx and Regards
SubhamIf you were dealing with Oracle 10g app server as opposed to standalone, I might be better able to help you.
One thing though, when you are configuring your MDB in the orion-ejb-jar.xml file, do not forget to specify attribute listener-threads, otherwise no matter how many beans you have in your MDB pool, only one bean will be listening to the queue. Many listener-threads equal to max number of beans in pool. -
Problem in configuring JMS adapter
Hello,
My purpose is to send xml data from MQSeries to BW using XI. MQSereies is installed in XI server. For thah I am trying to configure JMS adpter for MQSeries in XI. I have successfully deployed the necessary external drivers using SDM. I have configured the sender channel with the following parameters.
Adapter type: JMS
Transport Protocol :WEBsphereMQ(non-JMS)
Message protocol :JMS1.x
Queue connection factory java class:com.ibm.mq.jms.MQQueueConnectionFactory
Queue Java Class: com.ibm.mq.jms.MQQueue
IP address: IP address of XI system.
Port: 1414
Queue manager name : MQ-manager-name_XI-system-name
Channel Name : reciever-channel-name_XI-system-name
JMS queue: postcard
Charecter set ID:
Transport/networkprotocol: TCP/IP
JMS-Compliant : WebsphereMQ(non-JMS)
But when I check it in adapter monitor JMS is shown as red.
When I go to Visual Administrator
"cluster->server->services->monitoring->runtime->monitor tree->services->Connector Service" is white instead of green.
Can any one tell what could be the problem.
Regards,
AmithHi Vijaya,
In VA there is only option to stop or start JMS XI adapter.
I dont know where to activate JMS adapter in VA. It is already started in VA.
Regards,
Amith -
Problem Creating JMS Queue Tables
Oracle 9.2.0.1
Help Please.
I'm running into problems trying to create a JMS message queue table. following an example in the Oracle9ias containers for j2ee guide chapter 7. i've created a user and granted execute on sys.dbms_aqadm, sys.dbms_aq,
sys.dbms_aqin and sys.dbms_aqjms.
I log into SQL Plus as system with sysbda privilege.
and attempt to create a table using
DBMS_AQADM.CREATE_QUEUE_TABLE(
Queue_table => 'QTque',
Queue_payload_type => 'SYS.AQ$_JMS_STREAM_MESSAGE',
multiple_consumers => false);
but SQL Plus responds with an error saying: unknown command beginning 'DBMS_AQADM...' rest of line ignored.
is this a problem with my system administrator privileges
I've given it DBA and AQ_ADMINISTRATOR_ROLE.
In searching for a way around my problem I discovered you can easily create queue tables in the Advanced Queues section of enterprise manager. Problem doing it this way is a can't figure out how to specify payload type. If I select object I can't see how I can then specify the
SYS.AQ$_JMS_STREAM_MESSAGE type I require.
Any Tips appreciated.
Gary.try to execute:
BEGIN
DBMS_AQADM.CREATE_QUEUE_TABLE(
Queue_table => 'QTque',
Queue_payload_type => 'SYS.AQ$_JMS_STREAM_MESSAGE',
multiple_consumers => false);
END;
Regards,
Alexei -
Hi,
I have defined an error queue for a given queue. The problem is that
the error queue doesn't get any messages when there is an error, etc.
For example (WebLogic configuration for the queue1) -
Error Destination: errorqueue8.
Time To Live Override: 20000.
I want the messages in the queue1 to be transferred to errorqueue8
when the time-to-live expires. But this doesn't happen!
Does anyone know whats wrong? Am I doing something wrong with the
configurations?
I am using WebLogic 7.
Thanks in Advance.
Good timing!
WebLogic 8.1, which is out in restricted beta at the moment, and
will be out in public beta "soon", has this extension. You can
configure a WebLogic 8.1 destination to redirect expired messages
to an error destination. Prior versions of WebLogic do not
have this extensions.
Tom, BEA
mal wrote:
> Thanks for the answer!
>
> So what if I want to send the undilivered messages, for a given time,
> to go to another queue (without them getting lost)? Is there a way
> that I can do it within WebLogic 7? Or should I program for it in the
> application?
>
> Thanks,
>
>
> "Bart Simpson" <[email protected]> wrote in message news:<3e445c0c$[email protected]>...
>
>>Hi,
>>
>>How are you doing? If the TTL expires the messages are lost. So, WLS is behaving
>>as expected.
>>
>>Error destination makes sense for redelivery of messages that have already been
>>redelivered so many times...
>>
>>Best regards,
>>-Bart Simpson
>
-
Connection Problem To "JMS Queue XML"
Hi.
I can't connect to the JMS Queue XML.While Creating Data Server using the JMS XML Queue Technology pointing to WLS and the XML document type definition (dtd ) file books.dtd is provided from the local(C:\Documents and Settings\348773\Desktop\XML FILES) directory. The connection details are as below:-
Definition Tab:
Connection:
User: userXXX
Password: passYYY
These are user name and password for the application server
JNDI tab:
JNDI Authorization: None
JNDI User/password (same as above)
JNDI Protocol: Undefined
JNDI Driver: weblogic.jndi.WLInitialContextFactory
JNDI URL: http://172.18.41.47:7001?d=C:\Documents and Settings\348773\Desktop\XML FILES\books.dtd&JMS_DESTINATION=jms/demoQueue
JNDI Resource:eis/ConnFact/Queue
FYI:-I h'v just copy and pasted the value of JNDI Driver(weblogic.jndi.WLInitialContextFactory) from a document because I don't know how to find the JNDI drivers name for WLS.I think it is a default name.If I'm wrong then Please tell me how to find it.when I test the connection it shows an error like this:-
java.sql.SQLException: Cannot load connection class because of underlying exception: 'java.sql.SQLException: Cannot load connection class because of underlying exception: 'javax.jms.JMSException: ODI-40201: Cannot create the initial JNDI context)'.'.
at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter.doGetConnection(LoginTimeoutDatasourceAdapter.java:133)
at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter.getConnection(LoginTimeoutDatasourceAdapter.java:62)
at com.sunopsis.sql.SnpsConnection.testConnection(SnpsConnection.java:1118)
at com.sunopsis.graphical.dialog.SnpsDialogTestConnet.getLocalConnect(SnpsDialogTestConnet.java:420)
at com.sunopsis.graphical.dialog.SnpsDialogTestConnet.localConnect(SnpsDialogTestConnet.java:860)
at com.sunopsis.graphical.dialog.SnpsDialogTestConnet.jButtonTest_ActionPerformed(SnpsDialogTestConnet.java:806)
at com.sunopsis.graphical.dialog.SnpsDialogTestConnet.connEtoC1(SnpsDialogTestConnet.java:165)
at com.sunopsis.graphical.dialog.SnpsDialogTestConnet.access$1(SnpsDialogTestConnet.java:161)
at com.sunopsis.graphical.dialog.SnpsDialogTestConnet$IvjEventHandler.actionPerformed(SnpsDialogTestConnet.java:111)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2319)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3268)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2042)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2101)
at java.awt.Component.dispatchEvent(Component.java:4483)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2479)
at java.awt.Component.dispatchEvent(Component.java:4483)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:604)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:618)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:175)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:170)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:162)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.sql.SQLException: Cannot load connection class because of underlying exception: 'java.sql.SQLException: Cannot load connection class because of underlying exception: 'javax.jms.JMSException: ODI-40201: Cannot create the initial JNDI context)'.'.
at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter.doGetConnection(LoginTimeoutDatasourceAdapter.java:133)
at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter.getConnection(LoginTimeoutDatasourceAdapter.java:62)
at oracle.odi.core.datasource.dwgobject.support.OnConnectOnDisconnectDataSourceAdapter.getConnection(OnConnectOnDisconnectDataSourceAdapter.java:74)
at oracle.odi.jdbc.datasource.LoginTimeoutDatasourceAdapter$ConnectionProcessor.run(LoginTimeoutDatasourceAdapter.java:217)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:139)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:909)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: Cannot load connection class because of underlying exception: 'java.sql.SQLException: Cannot load connection class because of underlying exception: 'javax.jms.JMSException: ODI-40201: Cannot create the initial JNDI context)'.'.
at com.sunopsis.jdbc.driver.JMSXMLDriver.connect(JMSXMLDriver.java:113)
at oracle.odi.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:409)
at oracle.odi.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:385)
at oracle.odi.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:352)
at oracle.odi.jdbc.datasource.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:331)
... 7 more
Caused by: java.sql.SQLException: Cannot load connection class because of underlying exception: 'javax.jms.JMSException: ODI-40201: Cannot create the initial JNDI context)'.
at com.sunopsis.jdbc.driver.JMSXMLConnection.<init>(JMSXMLConnection.java:295)
at com.sunopsis.jdbc.driver.JMSXMLDriver.connect(JMSXMLDriver.java:99)
... 11 more
So,
please advise
Thanks
AnindyaHi,
Hope till now you might have solved this problem.
If not lets do this below workout , we had same kind of problem.
in JNDI tab , you have JNDI authentication, this authentication is for JNDI resources, I am sure you might be using weblogic credentials.
Steps :
1. Clear JNDI User : Blank (No value)
2. Clear Password : Blank (No Value)
3. set JNDI Authentication as None, regenerate the scenario and check
For accessing JNDI responses , JMS XML Queue uses Connection parameters from Definition tab.
Hope this helps
Maybe you are looking for
-
Where can I download Adobe acrobat 9 startdard? My Adobe Acrobat 9 stardard Cd is not reading.
-
Could not find Patch CR112484_81sp1.jar for WEBLOGIC 8.1
Due problem with ACTUATE Server 7 WE have to install this patch but we could not find it ? Where is it on WL8.1 reference site ? Thanks
-
Print Button not working properly in form
Hi Experts, I have modified one form everything fine but i faced one problem. when ever enter the item details in form then (print button is there)press the print button it will be give pdf file data properly coming, again if i modify the item detail
-
I can submit a screenshot if that would help. Just let me know
-
IPOD is corrupt and will not restore (gives me 1418 error)
My iPod has been corrupted. Each time I try to restore it gives me an error (1418) and indicates it cannot restore. I have downloaded the latest version of itunes and I still get the same error. Any ideas what to do next? Thanks in advance.