JMS Utilities
Hello,
We are using the JMS adapter along with MQ Series and the content convesion bean module on XI 3.0 (sp23). This works fine most of the time.
But when a problem occurs with a message stuck at the JMS Adapter layer, it is impossible with RWB to see the source message in its unparsed state. After some retries a message will fail and disappear presumably into a JMS dead letter queue. This is bad!
We would like to know the best tools to inspect, troubleshoot, and resubmit messages that can get caught up in JMS adapter level.
Some things on our list but we aren't sure about: JMS Telnet tool (not enough features?), SAP Management Console (won't work with XI3?), Hermes, JMS API to write our own, etc.
Your advice is greatly appreciated!
Aaron
Thank you for suggesting MQ Explorer and MQ J Explorer, we'll load it up and try it.
I'm really surprised there is not better functionality as part of SAP to do this but maybe that is really the case and we have to go 3rd party.
Any other suggestions or experiences? If your shop has a similar MQ / JMS adapter configuration, what is your process to monitor and troubleshoot message problems at the JMS layer? I plan to update a wiki with the information.
Best regards,
Aaron
Similar Messages
-
RIB Tools (RDMT) Instalation error
Hi ,
I am trying to Install Rib Tools :RDMT , but getting exception on jmx_ribstart.txt
Please help me regarding the exception.
java.lang.RuntimeException: No OC4J process up for AS instance identified by domain: opmn-rib-rms-oc4j-instance+oc4j-sim.versantindia.com-6003-default
at oracle.oc4j.admin.jmx.shared.Oc4jOpmnRmiDomain.getPort(Oc4jOpmnRmiDomain.java:344)
at oracle.oc4j.admin.jmx.shared.Oc4jRmiDomain.getRmiPort(Oc4jRmiDomain.java:119)
at oracle.oc4j.admin.jmx.client.CoreRemoteMBeanServer.fetchMBeanServerEjbRemote(CoreRemoteMBeanServer.java:433)
at oracle.oc4j.admin.jmx.client.CoreRemoteMBeanServer.<init>(CoreRemoteMBeanServer.java:161)
at oracle.oc4j.admin.jmx.client.RemoteMBeanServer.<init>(RemoteMBeanServer.java:128)
at oracle.oc4j.admin.jmx.client.RemoteMBeanServer.getMBeanServer(RemoteMBeanServer.java:158)
at oracle.oc4j.admin.jmx.client.ClientMBeanServerProxyFactory.getMBeanServer(ClientMBeanServerProxyFactory.java:68)
at oracle.oc4j.admin.jmx.remote.rmi.RMIJMXConnectorImpl.getConnector(RMIJMXConnectorImpl.java:190)
at oracle.oc4j.admin.jmx.remote.JMXConnectorImpl.connect(JMXConnectorImpl.java:400)
at oracle.oc4j.admin.jmx.remote.JMXConnectorImpl.connect(JMXConnectorImpl.java:352)
at com.oracle.rib.jmx.client.cmdline.cmds.ConnectCommand.execute(ConnectCommand.java:81)
at com.oracle.rib.jmx.client.cmdline.JmxClientMain.execute(JmxClientMain.java:149)
at com.oracle.rib.jmx.client.cmdline.JmxClientMain.main(JmxClientMain.java:78)
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:592)
at com.oracle.rib.rdmt.util.RdmtMainBootstrap.main(RdmtMainBootstrap.java:58)
Thanks & regards
Ripan Paul.Hi Erik Ykema.,
when Run rdmtmenu and select option 7 and select option 1 - Execute rib_health , Jmx error is getting
And when select option 13 - local OC4J status (opmn), error getting "opmnctl: command not found".
Here is the Details of RDMT Tools:
RIB Diagnostic & Monitoring Tools
Main Menu
This Host: sim.versantindia.com
RDMTLOGS : /home/oracle/rib-workspace/Rib1300ForAll13xxApps/rib-home/tools-home/rdmt/rdmt/RDMTLOGS
RMS DB : rms13dev@rms13
SIM DB : simuser@sim
TAFR DB : tafruser@sim
JMS Type : ojms
JMS HOST : sim
JMS Port : 1522
JMX CFG : jmx1.conf
OC4J : sim.versantindia.com:6003
Instance : rib-rms-oc4j-instance
RIB APP : rib-rms
1 - OC4J/JMX Utilities Menu 7 - RIB Health Menu 13 - RIB Admin menu
2 - JMS Utilities Menu 8 - Hospital Scan Menu 14 - Archive RDMTLOGS
3 - PUB/SUB Msg Menu 9 - JMS Topic Scan 15 - View history log
4 - Switch OC4J/JMX Config 10 - JMS Switch 16 - RIB Health scan
5 - Scan RIB Logs 11 - JMS Config
6 - Scan RIB Logs - delta 12 - View Scan Log Exceptions
99 - Logout
Selection: 7
RIB Diagnostic & Monitoring Tools
RIB Health SubMenu
This Host: sim.versantindia.com
RDMTLOGS : /home/oracle/rib-workspace/Rib1300ForAll13xxApps/rib-home/tools-home/rdmt/rdmt/RDMTLOGS
RMS DB : rms13dev@rms13
SIM DB : simuser@sim
TAFR DB : tafruser@sim
JMS Type : ojms
JMS HOST : sim
JMS Port : 1522
JMX CFG : jmx1.conf
OC4J : sim.versantindia.com:6003
Instance : rib-rms-oc4j-instance
User : oc4jadmin
RIB APP : rib-rms
Selections:
1 - Execute rib_health 6 - Scan App Logs 11 - RIB Config Report
2 - View lastrun ribhealth 7 - Scan App Logs - delta 12 - View lastrun config report
3 - Switch OC4J/JMX Config 8 - RIB Timings Utility 13 - local OC4J status (opmn)
4 - EJB Ping (RIB) 9 - Scan MFQTables 14 - ping db hosts
5 - EJB Ping (APP) 10 - Scan Upload Tables 15 - system scan
99 - Main menu
Selection: 1
Start RIB Health Scan sim.versantindia.com...10Feb24-0919
Logging to /home/oracle/rib-workspace/Rib1300ForAll13xxApps/rib-home/tools-home/rdmt/rdmt/RDMTLOGS/tmp/rh-10Feb24-0919
Performing checks using JMX configurations...
Detected 1 RIB OC4J Instance(s) configured.
Scanning configurations detected...
** Testing 1 - sim.versantindia.com:rib-rms-oc4j-instance:rib-rms...
JMX request for Instance status...
**JMX ERROR - see log file: /home/oracle/rib-workspace/Rib1300ForAll13xxApps/rib-home/tools-home/rdmt/rdmt/RDMTLOGS/tmp/jmx_ribstat.txt.**
Messages on topic using JMS configuration...
AQ JMS Topic Scan - Topics with Messages...
Scanning for Topics with Subscribers...
Found Topics with Subscribers: 0
Scanning for Topics with message counts...
-- Checking Threshold = 1000
MSGCNT TOPIC SUBSCRIBER
=============================================================================
Performing checks using Hospital configurations...
Performing checks using rms Hospital configuration...
Database User : rms13dev
Rib_message table row count : 6
Performing checks using tafr Hospital configuration...
Database User : tafruser
Rib_message table row count : 0
Performing checks using sim Hospital configuration...
Database User : simuser
Rib_message table row count : 1
Load Average - localhost
09:21:23 up 21 days, 20:31, 9 users, load average: 15.64, 8.35, 5.85
vmstat - localhost
procs -----------memory---------- ---swap-- -----io---- system ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 1 2852776 124480 2304 310180 224 180 279 249 8 8 16 21 45 18
1 1 2852776 123200 2312 310164 1368 0 1368 212 1266 4390 16 54 1 29
1 1 2852776 121536 2312 310308 1284 0 1284 0 1324 4484 34 45 3 18
1 1 2852776 120576 2320 310308 876 0 876 468 1233 4204 17 52 6 25
3 3 2852776 113768 2320 310440 1568 0 1568 96 1384 3967 40 44 3 12
mpstat - localhost
Linux 2.6.9-55.0.0.0.2.ELsmp (sim.versantindia.com) 02/24/2010
09:21:37 AM CPU %user %nice %system %iowait %irq %soft %idle intr/s
09:21:38 AM all 16.06 0.00 43.52 7.77 0.52 2.07 30.05 1081.00
09:21:39 AM all 13.93 0.00 43.28 0.00 0.00 0.50 42.29 1022.00
09:21:40 AM all 28.14 0.00 41.71 0.00 0.00 0.50 29.65 1128.00
09:21:41 AM all 16.75 0.00 46.60 0.00 0.00 2.09 34.55 1126.00
09:21:42 AM all 34.92 0.00 43.92 5.29 0.53 4.23 11.11 1443.18
Average: all 21.89 0.00 43.78 2.57 0.21 1.85 29.70 1153.07
Job Finished
AND WHEN SELECT RIB HEALTH SUBMENU
when SELECT option 13 - local OC4J status (opmn) , found "opmnctl: command not found"
Here is details :
RIB Diagnostic & Monitoring Tools
RIB Health SubMenu
This Host: sim.versantindia.com
RDMTLOGS : /home/oracle/rib-workspace/Rib1300ForAll13xxApps/rib-home/tools-home/rdmt/rdmt/RDMTLOGS
RMS DB : rms13dev@rms13
SIM DB : simuser@sim
TAFR DB : tafruser@sim
JMS Type : ojms
JMS HOST : sim
JMS Port : 1522
JMX CFG : jmx1.conf
OC4J : sim.versantindia.com:6003
Instance : rib-rms-oc4j-instance
User : oc4jadmin
RIB APP : rib-rms
Selections:
1 - Execute rib_health 6 - Scan App Logs 11 - RIB Config Report
2 - View lastrun ribhealth 7 - Scan App Logs - delta 12 - View lastrun config report
3 - Switch OC4J/JMX Config 8 - RIB Timings Utility 13 - local OC4J status (opmn)
4 - EJB Ping (RIB) 9 - Scan MFQTables 14 - ping db hosts
5 - EJB Ping (APP) 10 - Scan Upload Tables 15 - system scan
99 - Main menu
Selection: 13
/home/oracle/rib-workspace/Rib1300ForAll13xxApps/rib-home/tools-home/rdmt/rdmt/rdmt_ribhealth_submenu: line 178: opmnctl: command not found
Enter Key to continue...
Regards
Ripan paul. -
Hi,
I need to move the jms store (for jms server) from file based to db based.
Server has:
Distributed Queue Members
Distributed Topic Members
Durable Topic Subscriber
Persistent Messages (potentially un-consumed) for Member Queues and Topics.
1Any recommendations on the approach for going abt. this ?
2.Any utilities I could use ?
Thanx'Unless you can upgrade to a newer version, I know of no such utility - even then, I'm not sure I'd recommend it.
Your topic durable subscribers will be automatically recreated in the new store when they first attempt to connect but they won't have any messages (even if you could xfer the messages, a subscription ignores messages that are older than when the subscription was created anyway).
Depending on the use case, a solution that uses a messaging bridge or a hand-coded client might apply, where the bridge/client is used to xfer the message to a destination with a different name, and then is used to xfer the message on to the new destination.
Regardless, I still highly recommend simply draining all of your messages first, in which case the conversion becomes trivial.
Tom -
Startup Classes and JMS - Suggestions Please!
I'm in serious need of having several resources initialized before beans
start handling requests.
I tried implementing a Weblogic Startup Class, and it works fine - as long
as it's the first thing
to run! -- the problem is, when my Message Driven Beans deploy, if there are
messages waiting
for them in their durable subscriptions, they immediately start
processing... then about 30 seconds
later Weblogic (6.0sp1) gets around to starting my startup class. If I put
code in each MDB that
kicks off the initialization when they are invoked I still run into
problems, because my initialization
takes a LONG time (more than 2 minutes) - so I end up with lots of
transaction rollbacks... which
are very annoying and clutter up the log files, and scare customers of the
product.
Is there anyway to make a startup class/servlet/something that runs and
completes before any
other processing occurs?
Thanks,
JamesYes, Startup servlet has the same problem - it doesn't 'startup' until after
jms messages are already being delivered. :( aside from this, there are
class loader issues -servlet space and ejb space are not the same...
Thanks though,
James
"minjiang" <[email protected]> wrote in message
news:[email protected]...
Hi, did you ever try startup servlet? not startup class?
mj
James House wrote:
The only problem with creating a base class to extend is the fact that
Java only supports single inheritance, -- and I'm already inheriting...
>>
I've been involved with many projects that use WLServer, and in
almost every one of them, there has been a need for a startup class
that fires before the server starts handling requests.... strange that
I'd be the only one to need this, when the need has recurred so often.
James
"Raja Mukherjee" <[email protected]> wrote in message
news:[email protected]...
James,
If you have common initialization tasks to be shared by multiple MDBs,
I
would create an abstract class (a.k.a BeanAdapter class) where you canhave
all your initialization logics and have your MDB extend from it.
I am not convinced that the Startup class needs to run first. In fact,
I
have the same view that Startup class should run last. My only wishlist
for
startup class was that I should be able to specify order, which isaddressed
in 6.1.
I am also getting the feeling from different posts that MDB deploymentwould
have a re-try logic in 6.1, which I am beginning to look into. Check
(or
post) in JMS news group.
.raja
"James House" <[email protected]> wrote in message
news:[email protected]...
Thanks for the help... I like the pattern you pointed me to better
than
anything else... ... but in all cases (your method, Gene's, and whatI'm
currently doing) I still have to put some code in every MDB that
I deploy... : (
Put in a good word for me there at BEA and convince the appropriate
developer that startup classes should run first!
James
"Raja Mukherjee" <[email protected]> wrote in message
news:[email protected]...
James,
There are several ways to solve your problem. I normally use
setMessageDrivenContext to do all my initialization. There are two
types
of
initialization that I have performed here, first, reading theconfiguration
file and then load some utility classes in specific order. The
problem
with
the second was that you will have to use synchronized block
w/HotSpot
2.0
to
keep the order, which is ok. I don't use static block to do the
initialization, instead use an init() metod. Hopefully you got the
idea.
Recently, Gene Chuang created a pattern which esentially does the
same
and
I
liked the pattern because it was a nicer way of doing what I
needed to
do.
I
have changed all my examples to customer to use the new pattern.
You
can
find it in
http://theserverside.com/patterns/thread.jsp?thread_id=7270.
The
only think I do not use of this pattern is
initializeEveryContextSwap()
method. I am not convinced yet that I would need it (of course
that
might
change over the time).
Hope this helps, and thanks Gene.
.raja
"James House" <[email protected]> wrote in message
news:[email protected]...
Ok... here's some more detail:
The application is largely JMS based, and most of my Session
EJBs
are
invoked only my Message Driven Beans.
I have a large set of properties that need to be read from a
config
file,
and stored somewhere "globally". I also have a number of
utilities
that
need to get "warmed up" before I start doing any real processing(before
I start receiving messages from the JMS Topics). These
utilities
take
a
long time to warm up (a long time being about 45-60 seconds) -
because
they are loading hundereds of classes, and creating variousconnections
to external resources.
Currently I'm creating a Singleton object that reads the
configuration
file
name from an environment property, and it then parses the file,
and
starts
configuring all of these utilities. Since the "Startup Class"
didn't
work
(weblogic invokes it after I'm already receiving messages), I
put
code
at
the beginning of all of my MDB's onMessage() methods that calls
the
singleton's "getInstance()" method - which synchronizes on alock
object,
and does all of it's work.
I don't like this solution because:
1- I have to put code in EVERY message-driven bean that I
create -
if
I
forget one, everything is broken.
2- I have to increase the transaction time out of the entire
server
to
be over 60 seconds since the beans hang that long while theconfiguration
is
happening.
It seems very obvious that a "Startup Class" should be invoked
after
the
server has come completely up, but before it starts listening
for
requests -- isn't the whole point of a "startup class" to getthings
ready
that need to be done as soon as the server comes up? but alas,
the
person
who designed this at BEA apparently didn't agree with me on this
point!
Any suggestion on better solutions would be greatly appreciated.
James
"Raja Mukherjee" <[email protected]> wrote in message
news:[email protected]...
You can do it this way, but I would not recommend it, unless
that's
the
only
way to attack the problem at hand. But that's just me.
I have seen this problem with multiple clients and in most
cases
there
is
a
better way to handle it. If James give us a little more
information
on
what
type of configuration is he talking about and some background
of
his
application, we as a group can think and may be able to come
up
with
some
idea.
.raja
"Joel Nylund" <[email protected]> wrote in message
news:[email protected]...
you could wrap the starting of weblogic in your own class
and do
initialization
there. You have to be careful because of the way weblogic
classloaders
work, but
you may be able to do what you want. Weblogic is just a java
class,
so
you
can
start your class, then once your done initializing, just
call
weblogic.Server.main
-Joel
James House wrote:
I'm in serious need of having several resources
initialized
before
beans
start handling requests.
I tried implementing a Weblogic Startup Class, and it
works
fine -
as
long
as it's the first thing
to run! -- the problem is, when my Message Driven Beans
deploy,
if
there
are
messages waiting
for them in their durable subscriptions, they immediately
start
processing... then about 30 seconds
later Weblogic (6.0sp1) gets around to starting my startupclass.
If
I
put
code in each MDB that
kicks off the initialization when they are invoked I still
run
into
problems, because my initialization
takes a LONG time (more than 2 minutes) - so I end up with
lots
of
transaction rollbacks... which
are very annoying and clutter up the log files, and scarecustomers
of
the
product.
Is there anyway to make a startup class/servlet/something
that
runs
and
completes before any
other processing occurs?
Thanks,
James -
How to enable JMS with JMQ 2.0
I have trouble to enable jms in IAS6.0 sp2 with JMQ 2.0, on NT4.0
The instruction and the utility batch file talked only the JMQ 1.1, but
JMQ 1.1 is not available from iPlanet
web site. I downloaded and installed JMQ 2.0 that does not match the ias
instruction and utilities.
ias utility "jmqjmsadm.bat" calls "JMQ_HOME/bin/jmsconfig.bat". The
jmsconfig.bat does not exist in JMQ
2.0/bin
What is the solution?
Thanks a million in advance
Mikethe actual that comes with iplanet for JMQ is not proper. Please follow the
steps
said in the java programmer's guide. Ref to page no 266 for enabling JMQ(i.e
IMQ 2.0). actually i had the same problem like you but solved it by using
guide..
All the Best
william
Bangalore
india
default wrote:
I have trouble to enable jms in IAS6.0 sp2 with JMQ 2.0, on NT4.0
The instruction and the utility batch file talked only the JMQ 1.1, but
JMQ 1.1 is not available from iPlanet
web site. I downloaded and installed JMQ 2.0 that does not match the ias
instruction and utilities.
ias utility "jmqjmsadm.bat" calls "JMQ_HOME/bin/jmsconfig.bat". The
jmsconfig.bat does not exist in JMQ
2.0/bin
What is the solution?
Thanks a million in advance
Mike -
Hey guys, I need some serious help. I have an external hard drive, iomega which apears to no longer work; I am sure it is something I have done and I cant figure out what! I am certainly not a computer expert and am in Turkey so I dont have access to a MAC store for assistance or anything like it. Yesterday I plugged my external hard drive into my MacBook and got a message telling me to refotmat. I looked up how to do so and through disk utilities thought I did it right. Now when I plug in the hard drive my laptop does not pick it up; the only place it shows up is in utilities, the same place I tried to repair and reformat. When I am utilities it looks like I have 2 hard drives, one under the other. One tells me the description of the hard drive, the other doesnt really tell me anything. So I erased both of them and I think that is where my problem is. Any help on how I could fix this? I tried to "mount" the one that is not "mounted but it didnt work....I dont even know what that means!!! Help!
When you erased the disk did you select Mac OS Extended Journaled as the format option?
-
Setting the JMS Header from Payload
Hi Experts,
My requirement is to send the payment data coming from ECC to non sap system.Sender adapter is proxy and receiver is JMS.ECC will be sending the filename in one field and payload content as a string in another field.PI has to set the filename coming from ECC in JMS header property.What configuration changes should i need to make in JMS adapter to achieve it?
Converting the XML to string is possible in PI.But my question is converting the string XML data into XML fields is possible in SAP PI?If so how to do that?
Please provide your suggestion.
Regards,
KarthigaHi Karthiga,
The UDF is there in blog
DynamicConfiguration dynamicconfiguration = (DynamicConfiguration)param.get("DynamicConfiguration");
DynamicConfigurationKey dynamicconfigurationkey = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/JMS", "DCJMSMessageProperty0");
String s = dynamicconfiguration.get(dynamicconfigurationkey);
CorrID.append(s);
Please let me know if you have any issue.
regards,
Harish -
How to configure an Alert message if communicationChannel(JMS) stops
All,
Is there a way how to configure an alert when the communication channel stops.
<b>Scenario:</b>
In the path Runtime workbench->Component Monitoring->Adapter Engine->Communication Channel monitoring, if we see that a communication channel has stopped(RED traffic light as Status), then can we trigger an alert notification for same.
Currently we have alrerts configured for any message/s failure in the JMS Adapter Framework. So can we trigger simmilar alerts when a comm channel stops(for whatever reason).
Thanks in advance
RKHi Sreeram,
Thanks for the quick reply.
We have a scenario where we activate individual channels at a given time. So in this case, Adapter will always be in RED as all queues are never running in our scenario.
So we need an ALERT to be triggered for individual comm channels. Is theer any way that you can think of ?
Thanks and regards
RK -
JDBC connection pool failures when used by JMS stores
We are using WebLogic 6.1 sp2. We defined a separate connection pool for use by
a JMS Store.
<JDBCConnectionPool Name="sybaseJMSPool"
Targets="cluster00"
InitialCapacity="2"
MaxCapacity="10"
DriverName="com.sybase.jdbc2.jdbc.SybDriver"
Properties="[email protected]@;[email protected]@;charset=utf8"
URL="jdbc:sybase:Tds:@jms.db.host@/@jms.db.name@"/>
(note that the @xxx@ string are replaced by actual values).
We are using Sybase Jconnect 5.5 to a Sybase ASE 12.5 database.
We deployed this configuration on a number of environments (testing, staging,
..). The actual hardware and network configuration is different for the different
system, but the WebLogic domain stays the same regarding this issue.
On the test system we frequently get the following exceptions:
<Aug 13, 2002 1:56:04 PM CEST> <Alert> <JMS> <www00-test> <node00>
<ExecuteThread: '6' for queue: 'JMS.TimerClientPool'> <> <> <040048>
<JMSServer "JMSServer00", store failure while writing message for topic
OrderChangeTopic, java.io.IOException: JMS JDBC store, connection pool =
<sybaseJMSPool>, prefix = <JMS00>: write failed
java.sql.SQLException: JZ006: Caught IOException:
com.sybase.jdbc2.jdbc.SybConnectionDeadException: JZ0C0: Connection is already
closed.
at com.sybase.jdbc2.jdbc.ErrorMessage.raiseErrorCheckDead
(ErrorMessage.java:715)
at com.sybase.jdbc2.tds.Tds.handleIOE(Tds.java:3124)
at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1412)
at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1341)
at com.sybase.jdbc2.jdbc.SybStatement.doCancel(SybStatement.java:564)
at com.sybase.jdbc2.jdbc.SybStatement.updateLoop(SybStatement.java:1672)
at com.sybase.jdbc2.jdbc.SybStatement.executeUpdate
(SybStatement.java:1625)
at com.sybase.jdbc2.jdbc.SybPreparedStatement.executeUpdate
(SybPreparedStatement.java:91)
at com.p6spy.engine.logging.P6LogPreparedStatement.executeUpdate
(P6LogPreparedStatement.java:179)
at weblogic.jdbc.pool.Statement.executeUpdate(Statement.java:293)
at weblogic.jms.store.JDBCIOStream.write(JDBCIOStream.java:1246)
at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:250)
at weblogic.jms.store.JMSStore.execute(JMSStore.java:182)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
.>
java.io.IOException: JMS JDBC store, connection pool = <sybaseJMSPool>, prefix
= <JMS00>: write failed
java.sql.SQLException: JZ006: Caught IOException:
com.sybase.jdbc2.jdbc.SybConnectionDeadException: JZ0C0: Connection is already
closed.
at com.sybase.jdbc2.jdbc.ErrorMessage.raiseErrorCheckDead
(ErrorMessage.java:715)
at com.sybase.jdbc2.tds.Tds.handleIOE(Tds.java:3124)
at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1412)
at com.sybase.jdbc2.tds.Tds.cancel(Tds.java:1341)
at com.sybase.jdbc2.jdbc.SybStatement.doCancel(SybStatement.java:564)
at com.sybase.jdbc2.jdbc.SybStatement.updateLoop(SybStatement.java:1672)
at com.sybase.jdbc2.jdbc.SybStatement.executeUpdate
(SybStatement.java:1625)
at com.sybase.jdbc2.jdbc.SybPreparedStatement.executeUpdate
(SybPreparedStatement.java:91)
at com.p6spy.engine.logging.P6LogPreparedStatement.executeUpdate
(P6LogPreparedStatement.java:179)
at weblogic.jdbc.pool.Statement.executeUpdate(Statement.java:293)
at weblogic.jms.store.JDBCIOStream.write(JDBCIOStream.java:1246)
at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:250)
at weblogic.jms.store.JMSStore.execute(JMSStore.java:182)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
at weblogic.jms.store.JDBCIOStream.throwIOException
(JDBCIOStream.java:1213)
at weblogic.jms.store.JDBCIOStream.write(JDBCIOStream.java:1256)
at weblogic.jms.store.StoreRequest.doTheIO(StoreRequest.java:250)
at weblogic.jms.store.JMSStore.execute(JMSStore.java:182)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
Before that this message appeared:
<Aug 13, 2002 11:31:16 AM CEST> <Error> <ConnectionManager> <www00-test>
<node00> <ExecuteThread: '26' for queue: 'default'> <> <> <000000>
<Closing: 'weblogic.rjvm.t3.T3JVMConnection@795af6' because of: 'Server
received a message over an uninitialized connection: 'JVMMessage from: 'null'
to: '-4555218188801970213S:192.168.13.1:[7001,7001,7002,7002,7001,7002,-
1]:ADIS:node00' cmd: 'CMD_REQUEST', QOS: '101', responseId: '1',
invokableId: '287', flags: 'JVMIDs Not Sent, TX Context Not Sent', abbrev
offset: '34'''>
This problem did not occur on another system which was used during a 2 day stress
testing session.
It seems that the problem occurs after a period in which no user request where
made. The user requests trigger EJB's that start sending JMS messages.
When the problem occurs, the JMS messaging systems seems to lock up as no messages
are received anymore by the different listeners (MDBs).
Undeploying and redeploying the JBDC connection pool solves the problem. This
solution is unacceptable in case of a production system.
A similarly defined connection pool, which is used by the EJBs to make database
connection, does not manifest this problem.
<JDBCConnectionPool Name="sybasePool"
Targets="cluster00"
InitialCapacity="10"
CapacityIncrement="5"
MaxCapacity="50"
PreparedStatementCacheSize="150"
DriverName="com.sybase.jdbc2.jdbc.SybDriver"
Properties="[email protected]@;[email protected]@;JCONNECT_VERSION=6;charset=utf8"
URL="jdbc:sybase:Tds:@db.host@/@db.name@"/>
The JDBC connection pool is used as follows by the JDBC store
<JMSJDBCStore ConnectionPool="sybaseJMSPool" Name="JDBCStore00" PrefixName="JMS00"/>
<JMSServer Name="JMSServer00" Store="JDBCStore00" Targets="node00">
<JMSTopic JNDIName="ADIS.JMSError" JNDINameReplicated="false" Name="ErrorTopic"/>
<JMSTopic JNDIName="ADIS.Status"
Name="StatusTopic" RedeliveryDelayOverride="300000"/>
<JMSTopic JNDIName="ADIS.OrderChange" JNDINameReplicated="false"
Name="OrderChangeTopic" RedeliveryLimit="3"/>
</JMSServer>
Turning on the "Test Reserved Connection" with a appropriate test table does not
help.
Some sources on the internet tell us that JZ0C0 errors in the Jconnect driver
can be related to network problems. Nevertheless the connection pool should be
able to cope with this.
Can you provide any solution for this ? Or give us hints what can cause the problem
Zhenhao Qi wrote:
thanks! Joe.
The SQL statement itself can no longer be simplified, the long excuation time is due to the database size and complicated Select criteria. I can easily reproduce the problem by using this SQL. I tried "BEA's Oracle driver (Type 4): Version 8.1.7,9.0.1,9.2.0". the question can be dissect into 2 pieces:
1) why the jdbc connection (using oracle.jdbc.OracleDriver) won't return anything if the SQL execution time > 5min, that is probably the Oracle's problem
2) why the occupied connection pool won't release even I set "Statementtimeout=600", this is Weblogic's problem.
ZhenhaoHi. Yes, (1) is oracle's problem. (2) may also be. The JDBC spec has very few
allowances for one thread to interrupt a second thread's JDBC call. If we
transmit your timeout request by calling setQueryTimeout() on the oracle
statement, and if you have a weblogic-controlled transaction we call
Statement.cancel() on any ongoing statement, we end up relying on whether
the Oracle driver implements and responds to those calls.
Are you doing weblogic-controlled transactions? Are you/can you
call Statement.setQueryTimeout() on your statements, or are these
generated JDBC queries?
If you can duplicate the problem using the weblogic.jdbc.oracle.OracleDriver
we have some other debug avenues. This would be good even if you really
want to use the thin driver, because we will do the same JDBC calls to
either driver, and the debug would prove (if) we set up a query timeout
and if we call cancel(). If we do, then we can know that it is the Oracle
driver failing in these regards.
Joe -
Not all JMS consumers are created equal
Hi,
I am experiencing a very strange problem with weblogic 9.2 JMS.
I am using JMS as flow control in an application that allows our users to import data into our application.
the data to be imported varies in size from 100's of records to many hundred thousands of records.
JMS feed a MDB that takes the request and imports the data. The DD allows to 10 concurrent MDB's to service the requests.
The problem arises when the 11'th and 12th request comes in. Instead of waiting for the first availibe MDB to service the requests they seems to be put into the queue of the MDB that was started first. If this MDB is in the process of importing a very large file request 11 and 12 will sit and wait until the large one is done even though there are other MDB's that are idle.
I am hoping that there is an easy fix for this, but for the life of me, I cant seem to find it.
The DD for the MDB looks as follows
<weblogic-enterprise-bean>
<ejb-name>RuleEngineMDB</ejb-name>
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>10</max-beans-in-free-pool>
<initial-beans-in-free-pool>10</initial-beans-in-free-pool>
</pool>
<destination-jndi-name>com.company.product.RuleEngineRequestQueue</destination-jndi-name>
</message-driven-descriptor>
</weblogic-enterprise-bean>
the queue is defined in Weblog as
<queue name="RuleEngineReque
stQueue">
<sub-deployment-name>MyJMSServer</sub-deployment-name>
<delivery-params-overrides>
<delivery-mode>Non-Persistent</delivery-mode>
</delivery-params-overrides>
<message-logging-params>
<message-logging-enabled>true</message-logging-enabled>
<message-logging-format>%header%,%properties%,%body%</message-logging-format>
</message-logging-params>
<jndi-name>com.company.product.RuleEngineRequestQueue</jndi-name>
</queue>
regards,
Lars Hansson
CTO Compost Marketing AB.A little more detail: You will need to configure and target a custom conection factory with "message maximum" set to 1 (the default is 10), and then modify the MDB descriptor to reference the JNDI name of the custom connection factory. The connection factory should be targeted to the entire cluster, and must be targeted to the same cluster that hosts distributed queue. If the MDB is transactional, ensure that that the custom connection factory is also "xa enabled".
Edited by: TomB on Mar 2, 2010 2:44 PM -
JMS connection from SAP PI to Oracle AQ via JNDI...
Hi,
I am currently working on a project that requires connections between PI and Oracle AQ. It was advised that we shoule use PI JMS adpater with JNDI driver. However, it seems that not many people have tried this approach.
Has anyone had similar solutions in production ? How repliable it is ?
Your help is very much appreciated
TimHi Tim,
We implemented a similar scenario and now itu2019s still working.
You have to configure a JNDI connection, but not directly with the Oracle AQ. The Oracle AQ are just queues, and you need a JMS provider in order to establish the connection with these queues. The solution we implemented was:
1. Configure one OC4J server as JMS provider for the Oracle AQ queues.
2. Configure JMS communication channels in SAP PI to establish the connection with the OC4J server.
Maybe you can use a different and newer JMS provider, as BEA Weblogic or SAP WAS (I donu2019t know if itu2019s possible).
We implement the scenario in SAP PI 7.0, and with this version we had a problem: When the communication between JMS adapter and the queues was broken (the DDBB fell down for example), the channel failed, itu2019s normal. But when the DDBB was already running the channel stayed in an error state, and we had to restart the channel manually. The response of SAP to this issue was that the channel behavior was correct because the connection failed.
But this problem occurred rarely, maybe once a month. The solution is very reliable, we exchange a lot of message with this solution, and support messages of any size with an excellent performance.
Best Regards,
Roberto -
Voice memos in Utilities disappeared
My voice memos in the utilities section have disappeared from my iphone4, but they are backed up onto my mac mini. How do I reload them back onto my phone?
No. After waiting over two hours on the phone with apple support, they told me the voice memos were somehow currupt and there's no way to get them back.
-
Error on my IPad 2. When I'm trying to access in utilities to configure the email, this close suddenly and send me to home page.
Not sure about Utilities on your iPad. Do you mean the Settings app?
First thing to try is a reboot of your iPad. Press and hold the Home and Sleep buttons simultaneously ignoring the red slider until the Apple logo appear. Let go of the buttons and let the iPad restart. See if that fixes your problem. -
I cannot add a Wi-Fi guest network. Gone to Utilities>Airport Utilities and all I get is an image/browser of my Airport Extreme. Looking for the browser window which has the title Wireless but cannot find anywhere. What am I doing wrong?
Open AirPort Utility. The first screen looks something like this:
Click on the AirPort Extreme and another screen will appear. Click Edit, then the window with the Wireless tab will appear.
If you do not see these screens, you will need to start over and configure your AirPort again. -
Using socket and JMS protocol in the same logic for OSB
Hi frnds,
In my organization...the only communication protocol used is "socket" protocol. However, I want to use JMS protocol to process incoming messages. Can somebody help me figuring out how to go about it.
Using some nice OSB blogs, I am able to create the JMS connection factory and JMS queues in weblogic. And that works fine when I select the communication protocol as JMS while creating the BS and PS.
What should be my message flow when the communication protocol used is "socket" for both BS and PS.
salilHi,
Make the BS as JMS and the PS as socket, in the PS's flow do a route for the BS... Then if an external call is made to the PS via socket, it will send a messages to a JMS queue...
Hope this helps...
Cheers,
Vlad
Maybe you are looking for
-
My upgrade for Snow Leopard for my Mac won't stay in disk.
I have the snow Leopard upgrade for my Mac OS X 10.5.8 like they told me I needed at Apple. But when I insert the disk it doesn't take it, it stays in for a few seconds then comes out. Is there anything I can do? Thank you.
-
Problems after Update iTunes 7
I updated to iTunes 7. Now my iPod is not recognised anymore. After connecting my iPod nano nothing was happening anymore and I had to disconnect the iPod and lost everything on the iPod. The iPod is working but without connection to the computer not
-
Why are my parameter values not setting in report?
G'day, Like many others I am a developer who is new to crystal reports. I have researched a lot for setting report parameters and although my code seem to be working when I open the report through code I'm always asked to re-enter the parameter valu
-
JDBC Receiver - Muliple parallel connections?
Hi , Does the Receiver JDBC adapter support multiple parallel connections to the database. Can the calls be made in parallel. If yes then where is this parameter (maximum connections) set?. I was testing an RFC to JDBC sync scenario... My call
-
i get an error when trying to import my indesign pdf form, it worked fine and i made some changes to it and now i get erro can't import as unable to parse. what generally causes this? the error is a bit pointless as it doesnt state what it cant parse