JMS wrappers in POJO
For a specific use case, we are looking at the option of using a java callout ( A POJO) in a ALSB proxy service and to write some synchronous JMS code in it. We are not sure of ALSB internals and not sure whether the java callout code will be executed from a servlet or ejb context; and even if it is we dont have a choice to specify resource reference descriptors.
In this context is, it possible to leverage the features of JMS wrappers ( especially pooled connections and sessions) using some API's in the POJO code. Or is it that we have to maintain our own pooling for these objects in the POJO ?
All documentation I have looked so far seems to indicate that this feature is available only for servlet and ejb contexts at the server side and the way to enable is to use reource reference.
Thanks,
Atheek
Regardless of whether the code is running in an EJB, servlet, or even an arbitrary thread, I think you can simply lookup an arbitrary stateless session bean in JNDI and call it. The SSB can be your POJO, and can use a resource reference.
Some JNDI best practices: Remember to cache and re-use your JNDI context if possible, to cache your lookup result (JNDI lookups are relatively expensive), call context.close() when done with JNDI (to prevent a memory leak), and remember that you should not specify a URL (when no URL is specified, you get the local server or cluster name space -- which is what you want).
Tom
Similar Messages
-
JMS Wrappers can't cache JNDI lookups when using secured queues
Hi All!
We are working on a jms client, inside a webapp(servlets), using Weblogic 9.2 and Weblogic 10.3.
As we want to use secured queues and keep being efficient we tryed to use Weblogic JMS Wrappers, that should work according to the docs:
Enhanced Support for Using WebLogic JMS with EJBs and Servlets
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jms/j2ee.html
But we are facing a problem:
When we define a JMS Wrapper and try to cache JNDI lookups for the QueueConnectionFactory and Queue, as the docs recommend for efficiency, the connection to the queue is ignoring the user/pwd.
The JMS Wrapper is using <res-auth>Application</res-auth>.
We are creating the connection using createQueueConnection(user, pwd) from QueueConnectionFactory and after several tests it seems that the user and password are ingored unless a jndi lookup is made in the same thread, as if when there are not any thread credentials present user and password are ignored for the connection...
so the question is:
That behaviour goes against Weblogic JMS Wrapper documentation, doesn't it?
Is there then any other way to access efficiently secured queues using a servlet as a client? (iit's not an option for us to use mdbs, or ejbs).
If it helps, this seems related to this still opened spring-weblogic issue: SPR-2941 --> http://jira.springframework.org/browse/SPR-2941 and SPR-4720 --> http://jira.springframework.org/browse/SPR-4720
Thanxs
And here goes our DDs and code to reproduce:
First in pretty format:
web.xml --> http://pastebin.com/f5f85e8d4
weblogic.xml --> http://pastebin.com/f2fbe10cc
Client code --> http://pastebin.com/f586d32d9
And now emmebded in the msg:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app
xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/ns/weblogic/90
http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
<description>WebLogic Descriptor</description>
<resource-description>
<res-ref-name>jms/QCF</res-ref-name>
<jndi-name>weblogic.jms.ConnectionFactory</jndi-name>
</resource-description>
</weblogic-web-app>weblogic.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name> QCFWrapperCredentialsTest </display-name>
<description> QCFWrapperCredentialsTest </description>
<servlet id="Servlet_1">
<servlet-name>QCFWrapperCredentialsTest</servlet-name>
<servlet-class>QCFWrapperCredentialsTest</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping id="ServletMapping_1">
<servlet-name>QCFWrapperCredentialsTest</servlet-name>
<url-pattern>/Test</url-pattern>
</servlet-mapping>
<resource-ref>
<res-ref-name>jms/QCF</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Application</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>And our test client:
import java.io.*;
import java.util.Properties;
import javax.jms.*;
import javax.naming.*;
import javax.servlet.http.*;
public class QCFWrapperCredentialsTest extends HttpServlet {
QueueConnectionFactory factory = null;
Queue queue = null;
String jndiName = "java:comp/env/jms/QCF";
String queueName= "jms/ColaEntradaConsultas";
String user = "usuarioColas";
String pwd = "12345678";
String userjndi = "usuarioColas";
String pwdjndi = "12345678";
String serverT3URL="t3://127.0.0.1:7007";
public void init() {
setupJNDIResources();
private void setupJNDIResources(){
try {
Properties props = new Properties();
props.put("java.naming.factory.initial",
"weblogic.jndi.WLInitialContextFactory");
props.put("java.naming.provider.url",serverT3URL );
props.put("java.naming.security.principal", userjndi);// usr
props.put("java.naming.security.credentials", pwdjndi);// pwd
InitialContext ic = new InitialContext(props);
factory = (QueueConnectionFactory) ic.lookup(jndiName);
queue = (Queue) ic.lookup(queueName);
} catch (NamingException e) {
e.printStackTrace();
public void service(HttpServletRequest req, HttpServletResponse res) {
res.setContentType("text/html");
Writer wr = null;
try {
wr = res.getWriter();
//Comment this out, do a lookup for each request and it will work
//setupJNDIResources();
String user = this.user;
String pwd = this.pwd;
//read users and passwords from the request in case they are present
if (req.getParameter("user") != null) {
user = req.getParameter("user");
if (req.getParameter("pwd") != null) {
pwd = req.getParameter("pwd");
wr.write("JNDI User: *" + userjndi + "* y pwd: *" + pwdjndi + "*<p>");
wr.write("Queue User: *" + user + "* y pwd: *" + pwd + "*<p>");
//Obtain a connection using user/pwd
QueueConnection conn = factory.createQueueConnection(user, pwd);
QueueSession ses = conn.createQueueSession(true,
Session.SESSION_TRANSACTED);
QueueSender sender = ses.createSender(queue);
TextMessage msg = ses.createTextMessage();
msg.setText("Hi there!");
conn.start();
sender.send(msg);
ses.commit();
sender.close();
ses.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
try {
wr.write(e.toString());
} catch (Exception e2) {
e2.printStackTrace();
finally{
try {
wr.close();
} catch (IOException e) {
e.printStackTrace();
}Edited by: user2525402 on Feb 9, 2010 7:14 PMThanks Tom,
Quite a useful response .-)
Leaving aside the fact that weblogic behaviour with jms wrappers and secured queues seems to not be working as the docs says...
Talking about workarounds:
Both workarounds you suggest works, but as you already noted, creating a new JNDI context just to inject credentials into the threads is overkill when high performance is needed.
I also found more information about the same issue here: http://sleeplessinslc.blogspot.com/2009/04/weblogic-jms-standalone-multi-threaded.html
And he suggest the same workaround, injecting credentials
So I tried the second approach, successfully, injecting credentials into the thread using the security API.
This way, using JMS wrappers and injecting credentials into the thread we get the best performance available, caching resource using wrappers and using credentials in a somewhat efficient way.
Now the test snippet looks like this:
import java.io.*;
import java.security.PrivilegedAction;
import java.util.Properties;
import javax.jms.*;
import javax.naming.*;
import javax.security.auth.Subject;
import javax.security.auth.login.LoginException;
import javax.servlet.http.*;
import weblogic.jndi.Environment;
import weblogic.security.auth.Authenticate;
public class JMSWrapperCredentialsTest extends HttpServlet {
QueueConnectionFactory factory = null;
Queue queue = null;
String jndiName = "java:comp/env/jms/QCF";
String queueName= "jms/ColaEntradaConsultas";
String user = "usuarioColas";
String pwd = "12345678";
String userjndi = "usuarioColas";
String pwdjndi = "12345678";
String serverT3URL="t3://127.0.0.1:7007";
public void init() {
setupJNDIResources();
private void setupJNDIResources(){
try {
Properties props = new Properties();
props.put("java.naming.factory.initial",
"weblogic.jndi.WLInitialContextFactory");
props.put("java.naming.provider.url",serverT3URL );
props.put("java.naming.security.principal", userjndi);// usr
props.put("java.naming.security.credentials", pwdjndi);// pwd
InitialContext ic = new InitialContext(props);
factory = (QueueConnectionFactory) ic.lookup(jndiName);
queue = (Queue) ic.lookup(queueName);
} catch (NamingException e) {
e.printStackTrace();
public void service(HttpServletRequest req, HttpServletResponse res) {
final HttpServletRequest fReq=req;
final HttpServletResponse fRes=res;
PrivilegedAction action = new java.security.PrivilegedAction() {
public java.lang.Object run() {
performRequest(fReq,fRes);
return null;
try {
Subject subject=createSingleSubject(serverT3URL,user,pwd);
weblogic.security.Security.runAs(subject, action);
} catch (Exception e) {
e.printStackTrace();
public void performRequest(HttpServletRequest req, HttpServletResponse res) {
res.setContentType("text/html");
Writer wr = null;
try {
wr = res.getWriter();
//Comment this out, do a lookup for each request and it will work
//setupJNDIResources();
String user = this.user;
String pwd = this.pwd;
//read users and passwords from the request in case they are present
if (req.getParameter("user") != null) {
user = req.getParameter("user");
if (req.getParameter("pwd") != null) {
pwd = req.getParameter("pwd");
wr.write("JNDI User: *" + userjndi + "* y pwd: *" + pwdjndi + "*<p>");
wr.write("Queue User: *" + user + "* y pwd: *" + pwd + "*<p>");
//Obtain a connection using user/pwd
QueueConnection conn = factory.createQueueConnection(user, pwd);
QueueSession ses = conn.createQueueSession(true,
Session.SESSION_TRANSACTED);
QueueSender sender = ses.createSender(queue);
TextMessage msg = ses.createTextMessage();
msg.setText("Hi there!");
conn.start();
sender.send(msg);
ses.commit();
sender.close();
ses.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
try {
wr.write(e.toString());
} catch (Exception e2) {
e2.printStackTrace();
finally{
try {
wr.close();
} catch (IOException e) {
e.printStackTrace();
private Subject createSingleSubject(String providerUrl, String userName, String password) {
Subject subject = new Subject();
// Weblogic env class
Environment env = new Environment();
if(providerUrl!=null)
env.setProviderUrl(providerUrl);
env.setSecurityPrincipal(userName);
env.setSecurityCredentials(password);
try {
// Weblogic Authenticate class will populate and Seal the subject
Authenticate.authenticate(env, subject);
return subject;
catch (LoginException e) {
throw new RuntimeException("Unable to Authenticate User", e);
catch (Exception e) {
throw new RuntimeException("Error authenticating user", e);
}Thanks a lot for the help -
Using WebLogic JMS Wrappers with Spring
Hi,
I was just wondering if anyone used WebLogic JMS wrappers with Spring?
I am using WebLogic configured to have Sonic as my Foreign JNDI Provider. Weblogic provide me with specific entries on the admin console to set information such as the JNDI name of the Sonic Connection Factory. If I specify this JNDI name in the Spring config, and call getConnection() then I will get back a new connection each time.
I don't want this, I want to cache the connection (as connections are expensive in Sonic). This is where the WebLogic JMS wrappers come in, they can handle the pooling for me but the only way I can see to use them is via a resource-ref. It is possible for Spring to get a handle onto these wrappers or should I use Spring's own pooling mechanism instead?
P.S. I've also asked this question on the Spring forum
Thanks for any help
MandyMaybe you have already tried the following:
<beans xmlns:jee="http://www.springframework.org/schema/jee" ... >
<jee:jndi-lookup id="connectionFactory" jndi-name="jms.ConnectionFactory">
<jee:environment>
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://localhost:7001
</jee:environment>
</jee:jndi-lookup>
</beans>
an alternative is to use the JNDI template
<beans ... >
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
<prop key="java.naming.provider.url">t3://localhost:7001</prop>
</props>
</property>
</bean>
<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jndiTemplate" />
<property name="jndiName"><value>jms.ConnectionFactory</value></property>
</bean>
</beans> -
I'm using WL9.1 and would like to enable WebLogic JMS wrappers for my EJB. I followed the steps in e-docs, which included adding of the followings:
1) In ejb-jar.xml, I added:
<resource-ref>
<res-ref-name>MyFactory</res-ref-name>
<res-type>javax.jmx.TopicConnectionFactory</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<resource-env-ref>
<resource-env-ref-name>MyTopic</resource-env-ref-name>
<resource-env-ref-type>javax.jms.Topic</resource-env-ref-type>
</resource-env-ref>
2) In weblogic-ejb-jar.xml
<resource-description>
<res-ref-name>MyFactory</res-ref-name>
<jndi-name>MyFactory</jndi-name>
</resource-description>
<resource-env-description>
<resource-env-ref-name>MyTopic</resource-env-ref-name>
<jndi-name>MyTopic</jndi-name>
</resource-env-description>
3) I created the global MyFactory and MyTopic JNDI by adding new connection factory and topic using the console. When I did a look up for my connection factory using the name "java:comp/env/MyFactory", I received NamingException that it couldn't find the specified name. The same went with my topic. What did I do wrong?
4) I was able to look up my factory using the name "MyFactory", but I wanted to use the wrapped connection factory. What should I do?
Thanks.First of all, wrappers are not applicable for local WL JMS server. Actually, wrappers are applicable. They implicitly provide JMS resource pooling. When wrapped JMS resources are closed, they are put into an internal pool rather than destroyed - very similar to the way JDBC connection pools work. That said, it can be simpler and more performant just to cache references to destinations, connections, sessions, producers, and consumers directly in the EJB.
>>> Second, you need to set destination-jndi-name and connection-factory-jndi-name in weblogic-ejb-jar.xml to access a remote or foreign JMS server using wrappers.
Wrappers have nothing to do with these fields. These fields are used to configure the consumers that drive the MDB.
For more information, see the EJB MDB documentation, and also see the the following FAQ:
http://e-docs.bea.com/wls/docs81/faq/interop.html
Tom, BEA -
JMS multi thread best practise
Hi,
I would like to code a JMS layer that could be accessed by
a multi thread environment (a web app)
Is there any "Connection-Pool/DAO" equivalent design
pattern for JMS ?
Form what I know, connection are Thread Safe and Sessions
are not ...
PhilippeMany J2EE providers have their own JMS facades which provide pooling - so you could just use your container's JMS wrappers.
Another option, if you are inside a Servlet Engine, is to use Jencks which provides JMS & JDBC connection pooling as well as pooling of threads & message listeners & exception handling when consuming JMS messages.
e.g. here's inbound message consumption...
http://jencks.org/Message+Driven+POJOs
and here's outbound JMS (i.e. pooling when sending JMS messages etc)
http://jencks.org/Outbound+JMS
Jencks is basically a Spring based JCA container so it takes care of all the pooling for you as well as handling message inflow & outflow and can work with XA if you need it as well as local transactions.
James
http://logicblaze.com/ -
Hi everybody,
Is anybody successfully using remote IBM MQseries 5.3 server as
Foreign JMS in WLS 8.1sp2?
We're observing some strange behavior in this case. Here is our setup:
WLS and IBM MQ server deployed on separate boxes.
WLS version 8.1sp2 running on Windows 2000/Intel
IBM MQ version 5.3 running on Solaris/SPARC
We're using "WebSphere MQ classes for Java, version 5.303 - j5303-L030225"
and "WebSphere MQ Extended Transactional Client Feature, version 5.300 -
j5303-L030122"
MQ files added in WLS POST_CLASSPATH variable in WLS starup script.
Foreign JMS server configured in WLS via fscontext JNDI.
MDB bean deployed with Transaction attribute "Required".
Everything seems to work fine, if we're posting message to MQ queue MDB
receives it and process successfully (just print message content to the
console for now).
Problem: In WLS console, under Server->Monitoring->JTA->Monitor inflight
transactions we can constantly see one transaction enlisted for our MDB
bean with following details:
=====================================================
Transaction ID: BEA1-00DFC5EB4B7B7F28EDB9
Coordinator: mydomain+myserver
Name: JMSMessagePoller.xxx.xxx.MyMessageProcessorMdb
Status: Active
Seconds Active: 17
Resources:
weblogic.ejb20.JMSConnectionPoller.xxx.xxx.MyMessageProcessorMdb=started
Properties
(key=value):
weblogic.transaction.name=JMSMessagePoller.xxx.xxx.MyMessageProcessorMdb
=====================================================
This transaction seems to be Active for 30 seconds and then rolled back
(no error messages on WLS console displayed).On JTA statistics page in
WLS console "Total Rolled Back" counter keeps increneting with every
rollback.
Does anybody observerd similar problem? May be it's normal behaviour but
I'm kind of worrying about those transactions and constant rollback. I'd
appreciate any feedback.
Sincerely,
Dmitri Maximovich
Hi Dmitri,
The shutdown "suspend" failure has nothing to do with transactions
or JMS. It looks like the failure is due to a
java.util.ConcurrentModificationException during undeployment
which indicates a bug in WL - something is not getting
synchronized that should be.
As for MQ, their new extended client supports remote XA, which I think
is the reason for the product in the first place. Even so, I
still recommend testing to make sure that its messages
participate in transactions. (Actually, I recommend such testing
for any transactional app, including those built on WL JMS.)
Tom
Dmitri Maximovich wrote:
> Hi Tom,
>
> Thanks for info, that's a relief. Unfortunately there is no hints in WLS
> documentation that it's normal, that's why we were worried about it.
>
> Now there is one more issue, which I believe is related. You see with
> those 'in-flight' transactions graceful shutdown of WLS doesn't quite
> work. There is suspicious exception thrown and after that WLS is still
> running in some state but console is not available anymore. Please see
> console messages attached (sorry for long post). at the time of shutdown
> there is no messages in the queue(s) so as far as I can tell those
> 'pending transactions' mentioned is those from foreign JMS wrappers.
>
> I'd appreciate any comments on that. We have case opened with BEA about
> this but so far they cannot reproduce it in their lab. That's why I
> start wondering if we're doing something wrong here, like using remote
> MQ server for example, may be you not supposed to (I remember there was
> an issue before with IBM MQ that XA support required binding mode, I was
> kind of hope that it's not the case anymore)?
>
> <Mar 3, 2004 1:47:56 PM EST> <Notice> <WebLogicServer> <BEA-000365>
> <Server state changed to SUSPENDING>
> <Mar 3, 2004 1:47:56 PM EST> <Info> <Deployer> <BEA-149236> <Preparing
> to suspend.>
> <Mar 3, 2004 1:47:56 PM EST> <Info> <Deployer> <BEA-149237> <Ready to
> suspend.>
> <Mar 3, 2004 1:47:56 PM EST> <Info> <WebService> <BEA-220028> <Web
> Service reliable agents are suspended.>
> <Mar 3, 2004 1:47:56 PM EST> <Notice> <JTA> <BEA-110476> <The server has
> detected pending transactions during graceful shutdown. The server will
> wait for the pending transactions to complete before suspending the RMI
> service. A force shutdown command can be issued to shutdown the server
> immediately.>
> <Mar 3, 2004 1:48:26 PM EST> <Info> <Management> <BEA-141080> <A request
> has been received to force shut down of the server.>
> <Mar 3, 2004 1:48:26 PM EST> <Alert> <WebLogicServer> <BEA-000228> <The
> disabling of server logins has been requested by <WLS Kernel>>
> <Mar 3, 2004 1:48:26 PM EST> <Alert> <WebLogicServer> <BEA-000229>
> <Server logins have been disabled.>
> <Mar 3, 2004 1:48:26 PM EST> <Info> <WebService> <BEA-220028> <Web
> Service reliable agents are suspended.>
> <Mar 3, 2004 1:48:26 PM EST> <Info> <EJB> <BEA-010084> <The
> message-driven beans are being suspended. This may take a minute or two.>
> <Mar 3, 2004 1:48:32 PM EST> <Info> <EJB> <BEA-010085> <The
> message-driven beans have all been suspended.>
> <Mar 3, 2004 1:48:32 PM EST> <Info> <EJB> <BEA-010084> <The
> message-driven beans are being suspended. This may take a minute or two.>
> <Mar 3, 2004 1:48:32 PM EST> <Info> <EJB> <BEA-010085> <The
> message-driven beans have all been suspended.>
> [MessageDrivenBeanPoolInfoImpl] : Couldn't unregister MBean
> javax.management.InstanceNotFoundException:
> mydomain:ApplicationRuntime=myserver_otis-dasl-ejb,EJBComponentRuntime=myserver_otis-dasl-ejb_otis-dasl-ejb.jar,Location=myserver,Name=myserver_otis-dasl-ejb_otis-dasl-ejb.jar_com.cibcwm.go.otis.dasl.submission.DASLSubmissionMdb_wls.mqs.dasl.dev.adp.reply3,ServerRuntime=myserver,Type=EJBTransactionRuntime
>
> at
> com.sun.management.jmx.MBeanServerImpl.getMBean(MBeanServerImpl.java:1680)
> at
> com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1524)
> at
> weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:947)
>
> at
> weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:908)
>
> at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:946)
> at
> weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:481)
>
> at
> weblogic.management.runtime.EJBTransactionRuntimeMBean_Stub.preDeregister(EJBTransactionRuntimeMBean_Stub.java:433)
>
> at
> weblogic.management.internal.MBeanHomeImpl.internalDeleteMBean(MBeanHomeImpl.java:996)
>
> at
> weblogic.management.internal.MBeanHomeImpl.privateDeleteMBean(MBeanHomeImpl.java:982)
>
> at
> weblogic.management.internal.MBeanHomeImpl.access$000(MBeanHomeImpl.java:74)
>
> at
> weblogic.management.internal.MBeanHomeImpl$2.run(MBeanHomeImpl.java:948)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
>
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
> at
> weblogic.management.internal.MBeanHomeImpl.deleteMBeanWithKernelID(MBeanHomeImpl.java:944)
>
> at
> weblogic.management.internal.MBeanHomeImpl.deleteMBean(MBeanHomeImpl.java:939)
>
> at
> weblogic.management.internal.MBeanHomeImpl.deleteMBean(MBeanHomeImpl.java:933)
>
> at
> weblogic.management.runtime.RuntimeMBeanDelegate.unregister(RuntimeMBeanDelegate.java:140)
>
> at
> weblogic.ejb20.monitoring.EJBRuntimeMBeanImpl.unregisterDependents(EJBRuntimeMBeanImpl.java:58)
>
> at
> weblogic.ejb20.monitoring.MessageDrivenEJBRuntimeMBeanImpl.unregisterDependents(MessageDrivenEJBRuntimeMBeanImpl.java:50)
>
> at
> weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.unInitPool(MessageDrivenBeanPoolInfoImpl.java:208)
>
> at
> weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.onUndeploy(MessageDrivenBeanPoolInfoImpl.java:121)
>
> at
> weblogic.ejb20.deployer.MessageDrivenBeanInfoImpl.onUndeploy(MessageDrivenBeanInfoImpl.java:628)
>
> at weblogic.ejb20.internal.BaseEJBHome.undeploy(BaseEJBHome.java:203)
> at
> weblogic.ejb20.internal.MessageDrivenEJBHome.undeploy(MessageDrivenEJBHome.java:260)
>
> at
> weblogic.ejb20.deployer.EJBDeployer.deactivate(EJBDeployer.java:1802)
> at weblogic.ejb20.deployer.EJBModule.doDeactivate(EJBModule.java:865)
> at weblogic.ejb20.deployer.EJBModule.deactivate(EJBModule.java:712)
> at
> weblogic.j2ee.J2EEApplicationContainer.deactivateModule(J2EEApplicationContainer.java:3161)
>
> at
> weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2186)
>
> at
> weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2131)
>
> at
> weblogic.j2ee.J2EEApplicationContainer.stop(J2EEApplicationContainer.java:1915)
>
> at
> weblogic.j2ee.J2EEApplicationContainerFactory.removeDeployedApplications(J2EEApplicationContainerFactory.java:761)
>
> at
> weblogic.j2ee.J2EEApplicationService.shutdown(J2EEApplicationService.java:115)
>
> at
> weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.shutdownHelper(DeploymentManagerServerLifeCycleImpl.java:257)
>
> at
> weblogic.application.ApplicationService.prepareToSuspend(ApplicationService.java:46)
>
> at
> weblogic.t3.srvr.SubsystemManager.prepareToSuspend(SubsystemManager.java:168)
>
> at weblogic.t3.srvr.T3Srvr.prepareToSuspend(T3Srvr.java:1085)
> at
> weblogic.t3.srvr.ServerLifeCycleWorkerThread.prepareToSuspend(ServerLifeCycleWorkerThread.java:51)
>
> at
> weblogic.t3.srvr.ServerLifeCycleWorkerThread$1.run(ServerLifeCycleWorkerThread.java:35)
>
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
>
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
> at
> weblogic.t3.srvr.ServerLifeCycleWorkerThread.run(ServerLifeCycleWorkerThread.java:32)
>
> --------------- nested within: ------------------
> weblogic.management.ManagementException: An error has occurred during
> preDeregister().
> nullmydomain:ApplicationRuntime=myserver_otis-dasl-ejb,EJBComponentRuntime=myserver_otis-dasl-ejb_otis-dasl-ejb.jar,Location=myserver,Name=myserver_otis-dasl-ejb_otis-dasl-ejb.jar_com.cibcwm.go.otis.dasl.submission.DASLSubmissionMdb_wls.mqs.dasl.dev.adp.reply3,ServerRuntime=myserver,Type=EJBTransactionRuntime
> - with nested exception:
> [javax.management.InstanceNotFoundException:
> mydomain:ApplicationRuntime=myserver_otis-dasl-ejb,EJBComponentRuntime=myserver_otis-dasl-ejb_otis-dasl-ejb.jar,Location=myserver,Name=myserver_otis-dasl-ejb_otis-dasl-ejb.jar_com.cibcwm.go.otis.dasl.submission.DASLSubmissionMdb_wls.mqs.dasl.dev.adp.reply3,ServerRuntime=myserver,Type=EJBTransactionRuntime]
>
> at
> weblogic.management.runtime.RuntimeMBeanDelegate.unregister(RuntimeMBeanDelegate.java:148)
>
> at
> weblogic.ejb20.monitoring.EJBRuntimeMBeanImpl.unregisterDependents(EJBRuntimeMBeanImpl.java:58)
>
> at
> weblogic.ejb20.monitoring.MessageDrivenEJBRuntimeMBeanImpl.unregisterDependents(MessageDrivenEJBRuntimeMBeanImpl.java:50)
>
> at
> weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.unInitPool(MessageDrivenBeanPoolInfoImpl.java:208)
>
> at
> weblogic.ejb20.deployer.MessageDrivenBeanPoolInfoImpl.onUndeploy(MessageDrivenBeanPoolInfoImpl.java:121)
>
> at
> weblogic.ejb20.deployer.MessageDrivenBeanInfoImpl.onUndeploy(MessageDrivenBeanInfoImpl.java:628)
>
> at weblogic.ejb20.internal.BaseEJBHome.undeploy(BaseEJBHome.java:203)
> at
> weblogic.ejb20.internal.MessageDrivenEJBHome.undeploy(MessageDrivenEJBHome.java:260)
>
> at
> weblogic.ejb20.deployer.EJBDeployer.deactivate(EJBDeployer.java:1802)
> at weblogic.ejb20.deployer.EJBModule.doDeactivate(EJBModule.java:865)
> at weblogic.ejb20.deployer.EJBModule.deactivate(EJBModule.java:712)
> at
> weblogic.j2ee.J2EEApplicationContainer.deactivateModule(J2EEApplicationContainer.java:3161)
>
> at
> weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2186)
>
> at
> weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2131)
>
> at
> weblogic.j2ee.J2EEApplicationContainer.stop(J2EEApplicationContainer.java:1915)
>
> at
> weblogic.j2ee.J2EEApplicationContainerFactory.removeDeployedApplications(J2EEApplicationContainerFactory.java:761)
>
> at
> weblogic.j2ee.J2EEApplicationService.shutdown(J2EEApplicationService.java:115)
>
> at
> weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.shutdownHelper(DeploymentManagerServerLifeCycleImpl.java:257)
>
> at
> weblogic.application.ApplicationService.prepareToSuspend(ApplicationService.java:46)
>
> at
> weblogic.t3.srvr.SubsystemManager.prepareToSuspend(SubsystemManager.java:168)
>
> at weblogic.t3.srvr.T3Srvr.prepareToSuspend(T3Srvr.java:1085)
> at
> weblogic.t3.srvr.ServerLifeCycleWorkerThread.prepareToSuspend(ServerLifeCycleWorkerThread.java:51)
>
> at
> weblogic.t3.srvr.ServerLifeCycleWorkerThread$1.run(ServerLifeCycleWorkerThread.java:35)
>
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
>
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
> at
> weblogic.t3.srvr.ServerLifeCycleWorkerThread.run(ServerLifeCycleWorkerThread.java:32)
>
> <Mar 3, 2004 1:48:33 PM EST> <Info> <Management> <BEA-141082>
> <ServerRuntime:java.util.ConcurrentModificationException>
> <Mar 3, 2004 1:48:33 PM EST> <Info> <Management> <BEA-141082>
> <ServerRuntime:java.util.ConcurrentModificationException
> at
> java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:552)
> at java.util.LinkedList$ListItr.next(LinkedList.java:488)
> at
> weblogic.ejb20.deployer.EJBDeployer.deactivate(EJBDeployer.java:1801)
> at weblogic.ejb20.deployer.EJBModule.doDeactivate(EJBModule.java:865)
> at weblogic.ejb20.deployer.EJBModule.deactivate(EJBModule.java:712)
> at
> weblogic.j2ee.J2EEApplicationContainer.deactivateModule(J2EEApplicationContainer.java:3161)
>
> at
> weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2186)
>
> at
> weblogic.j2ee.J2EEApplicationContainer.deactivate(J2EEApplicationContainer.java:2131)
>
> at
> weblogic.j2ee.J2EEApplicationContainer.stop(J2EEApplicationContainer.java:1915)
>
> at
> weblogic.j2ee.J2EEApplicationContainerFactory.removeDeployedApplications(J2EEApplicationContainerFactory.java:761)
>
> at
> weblogic.j2ee.J2EEApplicationService.shutdown(J2EEApplicationService.java:115)
>
> at
> weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.shutdownHelper(DeploymentManagerServerLifeCycleImpl.java:257)
>
> at
> weblogic.application.ApplicationService.prepareToSuspend(ApplicationService.java:46)
>
> at
> weblogic.t3.srvr.SubsystemManager.prepareToSuspend(SubsystemManager.java:168)
>
> at weblogic.t3.srvr.T3Srvr.prepareToSuspend(T3Srvr.java:1085)
> at
> weblogic.t3.srvr.ServerLifeCycleWorkerThread.prepareToSuspend(ServerLifeCycleWorkerThread.java:51)
>
> at
> weblogic.t3.srvr.ServerLifeCycleWorkerThread$1.run(ServerLifeCycleWorkerThread.java:35)
>
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
>
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
> at
> weblogic.t3.srvr.ServerLifeCycleWorkerThread.run(ServerLifeCycleWorkerThread.java:32)
>
> >
> <Mar 3, 2004 1:48:35 PM EST> <Critical> <WebLogicServer> <BEA-000217>
> <Failed to fully suspend the server due to:
> java.util.ConcurrentModificationException
> java.util.ConcurrentModificationException
> at java.util.HashMap$HashIterator.nextEntry(HashMap.java:782)
> at java.util.HashMap$KeyIterator.next(HashMap.java:818)
> at
> weblogic.j2ee.J2EEApplicationContainerFactory.removeDeployedApplications(J2EEApplicationContainerFactory.java:751)
>
> at
> weblogic.j2ee.J2EEApplicationService.shutdown(J2EEApplicationService.java:115)
>
> at
> weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.shutdownHelper(DeploymentManagerServerLifeCycleImpl.java:257)
>
> at
> weblogic.application.ApplicationService.forceSuspend(ApplicationService.java:82)
>
> at
> weblogic.t3.srvr.SubsystemManager.forceSuspend(SubsystemManager.java:184)
> at weblogic.t3.srvr.T3Srvr.forceSuspend(T3Srvr.java:1097)
> at
> weblogic.t3.srvr.ServerRuntime.uprotectedForceShutdown(ServerRuntime.java:629)
>
> at weblogic.t3.srvr.ServerRuntime.access$300(ServerRuntime.java:83)
> at weblogic.t3.srvr.ServerRuntime$4.run(ServerRuntime.java:563)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
>
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
> at weblogic.t3.srvr.ServerRuntime.forceShutdown(ServerRuntime.java:559)
> at weblogic.t3.srvr.ServerRuntime.shutdown(ServerRuntime.java:547)
> 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
> weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:711)
>
> at
> weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:690)
>
> at
> com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
> at
> com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
> at
> weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:947)
>
> at
> weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:908)
>
> at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:946)
> at
> weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:481)
>
> at
> weblogic.management.runtime.ServerRuntimeMBean_Stub.shutdown(ServerRuntimeMBean_Stub.java:1184)
>
> at
> weblogic.server.ServerLifeCycleRuntime$ShutdownRequest.execute(ServerLifeCycleRuntime.java:585)
>
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
> >
> <Mar 3, 2004 1:48:35 PM EST> <Debug> <Management> <BEA-141132> <Dynamic
> invocation while executing action shutdown on
> mydomain:Location=myserver,Name=myserver,Type=ServerRuntime MBean
> instance failed. The method shutdown with signature [int, boolean] was
> invoked with parameters as [30, true].
> java.util.ConcurrentModificationException
> at java.util.HashMap$HashIterator.nextEntry(HashMap.java:782)
> at java.util.HashMap$KeyIterator.next(HashMap.java:818)
> at
> weblogic.j2ee.J2EEApplicationContainerFactory.removeDeployedApplications(J2EEApplicationContainerFactory.java:751)
>
> at
> weblogic.j2ee.J2EEApplicationService.shutdown(J2EEApplicationService.java:115)
>
> at
> weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.shutdownHelper(DeploymentManagerServerLifeCycleImpl.java:257)
>
> at
> weblogic.application.ApplicationService.forceSuspend(ApplicationService.java:82)
>
> at
> weblogic.t3.srvr.SubsystemManager.forceSuspend(SubsystemManager.java:184)
> at weblogic.t3.srvr.T3Srvr.forceSuspend(T3Srvr.java:1097)
> at
> weblogic.t3.srvr.ServerRuntime.uprotectedForceShutdown(ServerRuntime.java:629)
>
> at weblogic.t3.srvr.ServerRuntime.access$300(ServerRuntime.java:83)
> at weblogic.t3.srvr.ServerRuntime$4.run(ServerRuntime.java:563)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
>
> at
> weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
> at weblogic.t3.srvr.ServerRuntime.forceShutdown(ServerRuntime.java:559)
> at weblogic.t3.srvr.ServerRuntime.shutdown(ServerRuntime.java:547)
> 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
> weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:711)
>
> at
> weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:690)
>
> at
> com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
> at
> com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
> at
> weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:947)
>
> at
> weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:908)
>
> at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:946)
> at
> weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:481)
>
> at
> weblogic.management.runtime.ServerRuntimeMBean_Stub.shutdown(ServerRuntimeMBean_Stub.java:1184)
>
> at
> weblogic.server.ServerLifeCycleRuntime$ShutdownRequest.execute(ServerLifeCycleRuntime.java:585)
>
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
> >
>
> Tom Barnes wrote:
>
>> Hi Dmitri,
>>
>> This is normal behavior.
>> The internal rollbacks are a side effect of WL MDBs
>> necessarily starting a transaction before they (internally)
>> post a synchronous
>> receive on the remote foreign JMS server. If the synchronous receive
>> receives nothing, the tx is rolled back, and another
>> synch receive is posted with a new tx. (When interacting with
>> foreign vendors, tx MDBs usually must post synchronous receives
>> in order to infect the received message - there is no
>> standard JMS API for infecting asynchronously received messages
>> with a user transaction.)
>>
>> Tom
>>
>> Dmitri Maximovich wrote:
>>
>>> Hi everybody,
>>>
>>> Is anybody successfully using remote IBM MQseries 5.3 server as
>>> Foreign JMS in WLS 8.1sp2?
>>> We're observing some strange behavior in this case. Here is our setup:
>>>
>>> WLS and IBM MQ server deployed on separate boxes.
>>> WLS version 8.1sp2 running on Windows 2000/Intel
>>> IBM MQ version 5.3 running on Solaris/SPARC
>>>
>>> We're using "WebSphere MQ classes for Java, version 5.303 -
>>> j5303-L030225"
>>> and "WebSphere MQ Extended Transactional Client Feature, version
>>> 5.300 - j5303-L030122"
>>>
>>> MQ files added in WLS POST_CLASSPATH variable in WLS starup script.
>>>
>>> Foreign JMS server configured in WLS via fscontext JNDI.
>>>
>>> MDB bean deployed with Transaction attribute "Required".
>>>
>>> Everything seems to work fine, if we're posting message to MQ queue
>>> MDB receives it and process successfully (just print message content
>>> to the console for now).
>>>
>>> Problem: In WLS console, under Server->Monitoring->JTA->Monitor
>>> inflight transactions we can constantly see one transaction enlisted
>>> for our MDB bean with following details:
>>>
>>> =====================================================
>>> Transaction ID: BEA1-00DFC5EB4B7B7F28EDB9
>>> Coordinator: mydomain+myserver
>>> Name: JMSMessagePoller.xxx.xxx.MyMessageProcessorMdb
>>> Status: Active
>>> Seconds Active: 17
>>> Resources:
>>> weblogic.ejb20.JMSConnectionPoller.xxx.xxx.MyMessageProcessorMdb=started
>>> Properties
>>> (key=value):
>>> weblogic.transaction.name=JMSMessagePoller.xxx.xxx.MyMessageProcessorMdb
>>> =====================================================
>>>
>>> This transaction seems to be Active for 30 seconds and then rolled
>>> back (no error messages on WLS console displayed).On JTA statistics
>>> page in WLS console "Total Rolled Back" counter keeps increneting
>>> with every rollback.
>>>
>>> Does anybody observerd similar problem? May be it's normal behaviour
>>> but I'm kind of worrying about those transactions and constant
>>> rollback. I'd appreciate any feedback.
>>>
>>> ---
>>> Sincerely,
>>> Dmitri Maximovich
>>
>>
>>
-
How to configure MQ with WLS (JMS MQ vs Native MQ)
Hi All,
SOA Suite = 11.1.3.3
MQ Series = 6.0
Jdeveloper = 11.1.3.3
I want to read/write data to an MQ which is setup on a physical box different from Weblogic Server box. But both systems fall under the same network. I did some research on the forums to know the steps to configure MQ but ultimately got confused with the following questions in mind.
1. What is the difference between JMS MQ and Native MQ? How to determine which one to use?
2. If native MQ can be used here, what are the steps to configure Native MQ on WLS in my situation?
3. Do I need any foreign servers or message bridges to be configured?
Please provide any directions or pointers.
Regards,
Neeraj Sehga1. What is the difference between JMS MQ and Native MQ? How to determine which one to use?Native MQ refers to a proprietary api provided by IBM in multiple languages including java so that applications running on these can communicate mq. IBM also provides JMS wrappers around this native api, so that a jms client can talk to mq using JMS API. This is called MQ JMS.
2. If native MQ can be used here, what are the steps to configure Native MQ on WLS in my situation?SOA suite provides a MQ Resource Adaptor which can be used to connect to MQ. The developers of this resource adapter would have used the native api to enable the adaptor to talk to MQ, so that you dont have to worry about it. However you will need to configure the properties of your local MQ ( qmgr , q name etc). This is done in the outbound connection pool properties of the resource adaptor.
please check this blog for how to do this : http://soa-bpel-esb.blogspot.com/2009/09/configuring-mq-in-11g-soa-suite.html.
Since your MQ installation is in a remote machine you will have to configure the following properties specific to your environment - hostname, port, server connection channel, along with the queue manager name and queue name
3. Do I need any foreign servers or message bridges to be configured?Not required for your case if you are using MQ Adaptor. Since MQ also provides a JMS transport , you would have required foreign servers if you have to use JMS Adaptor instead of MQ Adaptor. Native MQ is expected to be faster than MQ JMS as it doesn't have the extra JMS layer. -
EJB3 - where to perform JMS JNDI lookups?
Hi, I was reading about how the WebLogic jms wrappers work at:
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/jms/j2ee.html
and noticed this section:
"The JNDI lookups of the Connection Factory and Destination objects can be expensive in terms of performance. This is particularly true if the Destination object points to a Foreign JMS Destination MBean, and therefore, is a lookup on a non-local JNDI provider.". I am using Sonic MQ as my foreign JMS Provider hence this is of particular interest to me.
The document recommends caching these lookups in the ejbCreate() method of an EJB. I'm new to EJB3 but notice there is no concept of an ejbCreate() method there so where should I cache the lookups and how do I ensure they get re-looked up in the case of a connection failure?
Many thanks
MandyThanks very much Tom, this helps a lot. I think my confusion lay in the fact that this document talks about caching the JNDI lookups in the ejbCreate and gives the example PoolTestBean.java which uses EJB2 style code. I've made your recommended changes to my code, would you mind just casting your eye over to see if looks ok? I have chosen to cache on create of the bean rather than on first invocation as I want clients to fail on startup rather than during their processing.
Sorry about code layout, not sure how to use HTML in posts to make it verbatim..
@Stateless
@TransactionAttribute(NEVER)
//@ExcludeDefaultInterceptors
public class ServiceWrapperBean implements ServiceWrapper {
// injected resources
@Resource
private SessionContext sctx; // inject the bean context
@Resource(name = "sonicConnectionFactory", mappedName = "sonic.connFactory", shareable = true)
private ConnectionFactory connectionFactory;
@Resource(name = "LegacyAccessIn", mappedName = "queue/LegacyIn", shareable = true)
private Destination sendQueue;
public void sendMessage(String msg) {
if (connectionFactory == null)
connectionFactory = (javax.jms.ConnectionFactory) sctx
.lookup("sonicConnectionFactory");
if (sendQueue == null)
sendQueue = (javax.jms.Destination) sctx.lookup("LegacyAccessIn");
if (msg == null)
throw new IllegalArgumentException("object cannot be null!");
Connection con = null;
Session session = null;
MessageProducer sender = null;
try {
con = connectionFactory.createConnection();
session = con.createSession(true, Session.AUTO_ACKNOWLEDGE);
sender = session.createProducer(null);
Message message = session.createTextMessage("do stuff");
sender.send(sendQueue, message);
} catch (JMSException e) {
// Invalidate the JNDI objects if there is a failure
// this is necessary because the destination object
// may become invalid if the destination server has
// been shut down
connectionFactory = null;
sendQueue = null;
throw new RuntimeException(e);
} finally {
if (con != null) {
try {
// Return JMS resources to the resource reference pool for later re-use.
// Closing a connection automatically also closes its sessions, etc.
con.close(); // also closes other objects
} catch (JMSException je) {
// ignore
} -
How to configure MQ-FTE and IBM Datapower along with PI7.1
Hi Friends,
Can somebody guide me with the steps to configure MQ-FTE and IBM Datapower with PI7.1 for B2B communication?
Thanks,
--Sonal1. What is the difference between JMS MQ and Native MQ? How to determine which one to use?Native MQ refers to a proprietary api provided by IBM in multiple languages including java so that applications running on these can communicate mq. IBM also provides JMS wrappers around this native api, so that a jms client can talk to mq using JMS API. This is called MQ JMS.
2. If native MQ can be used here, what are the steps to configure Native MQ on WLS in my situation?SOA suite provides a MQ Resource Adaptor which can be used to connect to MQ. The developers of this resource adapter would have used the native api to enable the adaptor to talk to MQ, so that you dont have to worry about it. However you will need to configure the properties of your local MQ ( qmgr , q name etc). This is done in the outbound connection pool properties of the resource adaptor.
please check this blog for how to do this : http://soa-bpel-esb.blogspot.com/2009/09/configuring-mq-in-11g-soa-suite.html.
Since your MQ installation is in a remote machine you will have to configure the following properties specific to your environment - hostname, port, server connection channel, along with the queue manager name and queue name
3. Do I need any foreign servers or message bridges to be configured?Not required for your case if you are using MQ Adaptor. Since MQ also provides a JMS transport , you would have required foreign servers if you have to use JMS Adaptor instead of MQ Adaptor. Native MQ is expected to be faster than MQ JMS as it doesn't have the extra JMS layer. -
Directory structure of JMS application
either we must follow any directory structure just like servlets and ejb as web-inf and meta-inf in JMS.
No real need - just use the JMS client directly in any JVM.
If you are using MDBs then yes you need to use an EAR just like EJBs - but alternatively just use spring.xml...
http://jencks.org/Message+Driven+POJOs
James
http://logicblaze.com/
Open Source SOA -
How to implement request/response domain in JMS
hi friends,
I need help regarding implementing request/response domain
in jms.please help me.See the TopicRequestor and QueueRequestor helper classes in the JMS API.
FWIW there's a POJO based request/response implementation using JMS here...
http://lingo.codehaus.org
you might find the source code useful as it does efficient request/response in a highly concurrent way using JMS under the covers.
James
http://logicblaze.com/ -
Newbie question about JMS topic and OSB
So here is what I want to achieve:
I want to "front" a JMS topic on WLS using OSB 10g. I want the users (producers and subscribers) to be access the topic via proxy services. The way I picture this is that a producer will invoke a proxy to publish a message. The subscriber will (asynchronously) invoke another proxy to pickup the message.
Is this possible and how do I go about doing this?
thanks
Edited by: user10341230 on Apr 28, 2010 8:49 AMHi there,
user10341230 wrote:
I want to "front" a JMS topic on WLS using OSB 10g. I want the users (producers and subscribers) to be access the topic via proxy services. > it's not really clear what you want to achieve here.
you say
user10341230 wrote:
The way I picture this is that a producer will invoke a proxy to publish a message.you need a proxy with whatever inbound protocol you like (http, file, mail...), which through a jms business service push the message to the Topic.
you say
user10341230 wrote:
The subscriber will (asynchronously) invoke another proxy to pickup the messagethe subscriber can be either asyncrhnous, in which case you need a proxy service with inbound protocol jms. or as you probably need a synchronous one
in which case you need another proxy with whatever inbound protocol you like whch once called in its pipeline calls some pojo class to read from this topic synchrnously (you need a durable subsciber).
Regards,
Tony
ps: have a look http://download-llnw.oracle.com/docs/cd/E11035_01/wls100/jms/design_best_practices.html#wp1058694 -
Session Beans and TIBCO E4JMS and Weblogic JMS 8.1
Setup:-
Weblogic Server 8.1 SP2 on Linux
TIBCO E4JMS 3.1.2
I have a two Staeless Session Beans which are deployed in both sides of the cluster
- Cluster is made up of two servers(ManagedServer1 and ManagedServer2) on the
same machine. The beans have container managed transaction and trans-type set
to required. The JMS Server is on ManagedServer1. The session bean publishes 100
messages to TIBCO JMS and Weblogic JMS and calls the second bean which again publishes
100 messages to TIBCO JMS and Weblogic JMS .
The connection factories used are XAQueueConnectionFactories.
This seems to work under the following conditions:-
a) The session beans are deployed just in ManagedServer1
b) The WL load balancing scheme manages to run both the beans on ManagedServer1
c) If I don't publish onto Weblogic JMS( It runs successfully on ManagedServer1
and ManagedServer2)
It does not seems to work :-
When the The WL load balancing scheme manages to run both the beans on ManagedServer2.I
put debug statements on the beans and it seems to publish everything but fails
during the commit
murali@dbuslinux1:~/SessionBeanExample> ant run
Buildfile: build.xml
run:
[java] Run : 0
[java] InitialContextFactory weblogic.jndi.WLInitialContextFactory
[java] Provider Url t3://myhost.mycompany.com:18003,myhost.mycompany.com:18005
[java] javax.transaction.TransactionRolledbackException: Exception while
commiting Tx : Name=[EJB Case463495.StatelessBean.sendMessageWrap(java.lang.Integer,java.lang.Integer,java.lang.String,boolean,boolean)],Xid=BEA1-000649EC8876A0032A5E(160401684),Status=Rolled
back. [Reason=javax.transaction.xa.XAException],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds
since begin=3,seconds left=30,XAServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN1TCF]=(ServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN1TCF]=(state=rolledback,assigned=ManagedServer2),xar=weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource@a0181b0),XAServerResourceInfo[JMS_MyJMS
File Store]=(ServerResourceInfo[JMS_MyJMS File Store]=(state=rolledback,assigned=ManagedServer1),xar=null),XAServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN2TCF]=(ServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN2TCF]=(state=rolledback,assigned=ManagedServer2),xar=weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource@98f6821),SCInfo[E4JMSDOMAIN+ManagedServer1]=(state=rolledback),SCInfo[E4JMSDOMAIN+ManagedServer2]=(state=rolledback),properties=({weblogic.transaction.name=[EJB
Case463495.StatelessBean.sendMessageWrap(java.lang.Integer,java.lang.Integer,java.lang.String,boolean,boolean)]}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=ManagedServer2+myhost.mycompany.com:18005+E4JMSDOMAIN+t3+,
XAResources={},NonXAResources={})],CoordinatorURL=ManagedServer2+myhost.mycompany.com:18005+E4JMSDOMAIN+t3+):
javax.transaction.xa.XAException
[java] at com.tibco.tibjms.TibjmsXAResource.end(Ljavax.transaction.xa.Xid;I)V(TibjmsXAResource.java:157)
[java] at weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource.end(Ljavax.transaction.xa.Xid;I)V(Unknown
Source)
[java] at weblogic.transaction.internal.XAServerResourceInfo.end(Lweblogic.transaction.internal.ServerTransactionImpl;Ljavax.transaction.xa.Xid;I)V(XAServerResourceInfo.java:1124)
[java] at weblogic.transaction.internal.XAServerResourceInfo.internalDelist(Lweblogic.transaction.internal.ServerTransactionImpl;I)V(XAServerResourceInfo.java:325)
[java] at weblogic.transaction.internal.XAServerResourceInfo.delist(Lweblogic.transaction.internal.ServerTransactionImpl;IZ)V(XAServerResourceInfo.java:255)
[java] at weblogic.transaction.internal.ServerTransactionImpl.delistAll(IZ)V(ServerTransactionImpl.java:1408)
[java] at weblogic.transaction.internal.ServerTransactionImpl.delistAll(I)V(ServerTransactionImpl.java:1396)
[java] at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare()V(ServerTransactionImpl.java:1932)
[java] at weblogic.transaction.internal.ServerTransactionImpl.internalCommit()V(ServerTransactionImpl.java:252)
[java] at weblogic.transaction.internal.ServerTransactionImpl.commit()V(ServerTransactionImpl.java:221)
[java] at weblogic.ejb20.internal.BaseEJBObject.postInvoke(Lweblogic.ejb20.interfaces.InvocationWrapper;Ljava.lang.Throwable;)V(BaseEJBObject.java:289)
[java] at weblogic.ejb20.internal.StatelessEJBObject.postInvoke(Lweblogic.ejb20.interfaces.InvocationWrapper;Ljava.lang.Throwable;)V(StatelessEJBObject.java:141)
[java] at Case463495.Stateless_soycq8_EOImpl.sendMessageWrap(Ljava.lang.Integer;Ljava.lang.Integer;Ljava.lang.String;ZZ)V(Stateless_soycq8_EOImpl.java:112)
[java] at Case463495.Stateless_soycq8_EOImpl_WLSkel.invoke(ILweblogic.rmi.spi.InboundRequest;Lweblogic.rmi.spi.OutboundResponse;Ljava.lang.Object;)Lweblogic.rmi.spi.OutboundResponse;(Unknown
Source)
[java] at weblogic.rmi.internal.BasicServerRef.invoke(Lweblogic.rmi.extensions.server.RuntimeMethodDescriptor;Lweblogic.rmi.spi.InboundRequest;Lweblogic.rmi.spi.OutboundResponse;)V(BasicServerRef.java:477)
[java] at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(Lweblogic.rmi.extensions.server.RuntimeMethodDescriptor;Lweblogic.rmi.spi.InboundRequest;Lweblogic.rmi.spi.OutboundResponse;)V(ReplicaAwareServerRef.java:108)
[java] at weblogic.rmi.internal.BasicServerRef$1.run()Ljava.lang.Object;(BasicServerRef.java:420)
[java] at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic.security.subject.AbstractSubject;Ljava.security.PrivilegedExceptionAction;)Ljava.lang.Object;(AuthenticatedSubject.java:353)
[java] at weblogic.security.service.SecurityManager.runAs(Lweblogic.security.acl.internal.AuthenticatedSubject;Lweblogic.security.acl.internal.AuthenticatedSubject;Ljava.security.PrivilegedExceptionAction;)Ljava.lang.Object;(SecurityManager.java:144)
[java] at weblogic.rmi.internal.BasicServerRef.handleRequest(Lweblogic.rmi.spi.InboundRequest;)V(BasicServerRef.java:415)
[java] at weblogic.rmi.internal.BasicExecuteRequest.execute(Lweblogic.kernel.ExecuteThread;)V(BasicExecuteRequest.java:30)
[java] at weblogic.kernel.ExecuteThread.execute(Lweblogic.kernel.ExecuteRequest;)V(ExecuteThread.java:197)
[java] at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:170)
[java] at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown
Source)
[java] ; nested exception is:
[java] javax.transaction.xa.XAException
[java] at weblogic.rjvm.BasicOutboundRequest.sendReceive()Lweblogic.rmi.spi.InboundResponse;(BasicOutboundRequest.java:108)
[java] at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(Lweblogic.rmi.extensions.server.RemoteReference;Lweblogic.rmi.extensions.server.RuntimeMethodDescriptor;[Ljava.lang.Object;Ljava.lang.reflect.Method;)Ljava.lang.Object;(ReplicaAwareRemoteRef.java:284)
[java] at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(Ljava.rmi.Remote;Lweblogic.rmi.extensions.server.RuntimeMethodDescriptor;[Ljava.lang.Object;Ljava.lang.reflect.Method;)Ljava.lang.Object;(ReplicaAwareRemoteRef.java:244)
[java] at Case463495.Stateless_soycq8_EOImpl_812_WLStub.sendMessageWrap(Ljava.lang.Integer;Ljava.lang.Integer;Ljava.lang.String;ZZ)V(Unknown
Source)
[java] at Case463495.Client.run()V(Client.java:103)
[java] at Case463495.Client.sendMessage()V(Client.java:132)
[java] at Case463495.Client.main([Ljava.lang.String;)V(Client.java:195)
[java] Caused by: javax.transaction.xa.XAException
[java] at com.tibco.tibjms.TibjmsXAResource.end(TibjmsXAResource.java:157)
[java] at weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource.end(Unknown
Source)
[java] at weblogic.transaction.internal.XAServerResourceInfo.end(XAServerResourceInfo.java:1124)
[java] at weblogic.transaction.internal.XAServerResourceInfo.internalDelist(XAServerResourceInfo.java:325)
[java] at weblogic.transaction.internal.XAServerResourceInfo.delist(XAServerResourceInfo.java:255)
[java] at weblogic.transaction.internal.ServerTransactionImpl.delistAll(ServerTransactionImpl.java:1408)
[java] at weblogic.transaction.internal.ServerTransactionImpl.delistAll(ServerTransactionImpl.java:1396)
[java] at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(ServerTransactionImpl.java:1932)
[java] at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:252)
[java] at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:221)
[java] at weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:289)
[java] at weblogic.ejb20.internal.StatelessEJBObject.postInvoke(StatelessEJBObject.java:141)
[java] at Case463495.Stateless_soycq8_EOImpl.sendMessageWrap(Stateless_soycq8_EOImpl.java:112)
[java] at Case463495.Stateless_soycq8_EOImpl_WLSkel.invoke(Unknown Source)
[java] at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
[java] at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:108)
[java] at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
[java] at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
[java] at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
[java] at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
[java] at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
[java] at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
[java] at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
[java] at java.lang.Thread.startThreadFromVM(Unknown Source)
Apologies in advance if this need to be posted in the JTA news group..
Any ideas?
Murali
Posting to the transaction newsgroup would probably also be helpful.
Can you post the code for the session bean so we can see how you're
enlisting Tibco in the transaction? It looks like you're using the JMS
provider wrappers from 8.1, which do the transaction enlistment for you, so
you shouldn't need to mess with JTA at all in your code. Still, something
weird is going on and it'd be nice to see exactly what your code looks like.
greg
"L Muralidharan" <[email protected]> wrote in message
news:[email protected]...
>
> Setup:-
>
> Weblogic Server 8.1 SP2 on Linux
>
> TIBCO E4JMS 3.1.2
>
> I have a two Staeless Session Beans which are deployed in both sides of
the cluster
> - Cluster is made up of two servers(ManagedServer1 and ManagedServer2) on
the
> same machine. The beans have container managed transaction and trans-type
set
> to required. The JMS Server is on ManagedServer1. The session bean
publishes 100
> messages to TIBCO JMS and Weblogic JMS and calls the second bean which
again publishes
> 100 messages to TIBCO JMS and Weblogic JMS .
>
> The connection factories used are XAQueueConnectionFactories.
>
> This seems to work under the following conditions:-
>
> a) The session beans are deployed just in ManagedServer1
> b) The WL load balancing scheme manages to run both the beans on
ManagedServer1
> c) If I don't publish onto Weblogic JMS( It runs successfully on
ManagedServer1
> and ManagedServer2)
>
> It does not seems to work :-
>
> When the The WL load balancing scheme manages to run both the beans on
ManagedServer2.I
> put debug statements on the beans and it seems to publish everything but
fails
> during the commit
>
> murali@dbuslinux1:~/SessionBeanExample> ant run
> Buildfile: build.xml
>
> run:
> [java] Run : 0
> [java] InitialContextFactory weblogic.jndi.WLInitialContextFactory
> [java] Provider Url
t3://myhost.mycompany.com:18003,myhost.mycompany.com:18005
> [java] javax.transaction.TransactionRolledbackException: Exception
while
> commiting Tx : Name=[EJB
Case463495.StatelessBean.sendMessageWrap(java.lang.Integer,java.lang.Integer
,java.lang.String,boolean,boolean)],Xid=BEA1-000649EC8876A0032A5E(160401684)
,Status=Rolled
> back.
[Reason=javax.transaction.xa.XAException],numRepliesOwedMe=0,numRepliesOwedO
thers=0,seconds
> since begin=3,seconds
left=30,XAServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEA
N1TCF]=(ServerResourceInfo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN1
TCF]=(state=rolledback,assigned=ManagedServer2),xar=weblogic.deployment.jms.
WrappedXAResource_com_tibco_tibjms_TibjmsXAResource@a0181b0),XAServerResourc
eInfo[JMS_MyJMS
> File Store]=(ServerResourceInfo[JMS_MyJMS File
Store]=(state=rolledback,assigned=ManagedServer1),xar=null),XAServerResource
Info[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN2TCF]=(ServerResourceIn
fo[E4JMSDOMAIN.ManagedServer2.JMSXASessionPool.BEAN2TCF]=(state=rolledback,a
ssigned=ManagedServer2),xar=weblogic.deployment.jms.WrappedXAResource_com_ti
bco_tibjms_TibjmsXAResource@98f6821),SCInfo[E4JMSDOMAIN+ManagedServer1]=(sta
te=rolledback),SCInfo[E4JMSDOMAIN+ManagedServer2]=(state=rolledback),propert
ies=({weblogic.transaction.name=[EJB
>
Case463495.StatelessBean.sendMessageWrap(java.lang.Integer,java.lang.Integer
,java.lang.String,boolean,boolean)]}),OwnerTransactionManager=ServerTM[Serve
rCoordinatorDescriptor=(CoordinatorURL=ManagedServer2+myhost.mycompany.com:1
8005+E4JMSDOMAIN+t3+,
>
XAResources={},NonXAResources={})],CoordinatorURL=ManagedServer2+myhost.myco
mpany.com:18005+E4JMSDOMAIN+t3+):
> javax.transaction.xa.XAException
> [java] at
com.tibco.tibjms.TibjmsXAResource.end(Ljavax.transaction.xa.Xid;I)V(TibjmsXA
Resource.java:157)
> [java] at
weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource.
end(Ljavax.transaction.xa.Xid;I)V(Unknown
> Source)
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.end(Lweblogic.transaction
.internal.ServerTransactionImpl;Ljavax.transaction.xa.Xid;I)V(XAServerResour
ceInfo.java:1124)
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.internalDelist(Lweblogic.
transaction.internal.ServerTransactionImpl;I)V(XAServerResourceInfo.java:325
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.delist(Lweblogic.transact
ion.internal.ServerTransactionImpl;IZ)V(XAServerResourceInfo.java:255)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.delistAll(IZ)V(ServerTra
nsactionImpl.java:1408)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.delistAll(I)V(ServerTran
sactionImpl.java:1396)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.globalPrepare()V(ServerT
ransactionImpl.java:1932)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.internalCommit()V(Server
TransactionImpl.java:252)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.commit()V(ServerTransact
ionImpl.java:221)
> [java] at
weblogic.ejb20.internal.BaseEJBObject.postInvoke(Lweblogic.ejb20.interfaces.
InvocationWrapper;Ljava.lang.Throwable;)V(BaseEJBObject.java:289)
> [java] at
weblogic.ejb20.internal.StatelessEJBObject.postInvoke(Lweblogic.ejb20.interf
aces.InvocationWrapper;Ljava.lang.Throwable;)V(StatelessEJBObject.java:141)
> [java] at
Case463495.Stateless_soycq8_EOImpl.sendMessageWrap(Ljava.lang.Integer;Ljava.
lang.Integer;Ljava.lang.String;ZZ)V(Stateless_soycq8_EOImpl.java:112)
> [java] at
Case463495.Stateless_soycq8_EOImpl_WLSkel.invoke(ILweblogic.rmi.spi.InboundR
equest;Lweblogic.rmi.spi.OutboundResponse;Ljava.lang.Object;)Lweblogic.rmi.s
pi.OutboundResponse;(Unknown
> Source)
> [java] at
weblogic.rmi.internal.BasicServerRef.invoke(Lweblogic.rmi.extensions.server.
RuntimeMethodDescriptor;Lweblogic.rmi.spi.InboundRequest;Lweblogic.rmi.spi.O
utboundResponse;)V(BasicServerRef.java:477)
> [java] at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(Lweblogic.rmi.extensions.s
erver.RuntimeMethodDescriptor;Lweblogic.rmi.spi.InboundRequest;Lweblogic.rmi
.spi.OutboundResponse;)V(ReplicaAwareServerRef.java:108)
> [java] at
weblogic.rmi.internal.BasicServerRef$1.run()Ljava.lang.Object;(BasicServerRe
f.java:420)
> [java] at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic.security.
subject.AbstractSubject;Ljava.security.PrivilegedExceptionAction;)Ljava.lang
.Object;(AuthenticatedSubject.java:353)
> [java] at
weblogic.security.service.SecurityManager.runAs(Lweblogic.security.acl.inter
nal.AuthenticatedSubject;Lweblogic.security.acl.internal.AuthenticatedSubjec
t;Ljava.security.PrivilegedExceptionAction;)Ljava.lang.Object;(SecurityManag
er.java:144)
> [java] at
weblogic.rmi.internal.BasicServerRef.handleRequest(Lweblogic.rmi.spi.Inbound
Request;)V(BasicServerRef.java:415)
> [java] at
weblogic.rmi.internal.BasicExecuteRequest.execute(Lweblogic.kernel.ExecuteTh
read;)V(BasicExecuteRequest.java:30)
> [java] at
weblogic.kernel.ExecuteThread.execute(Lweblogic.kernel.ExecuteRequest;)V(Exe
cuteThread.java:197)
> [java] at
weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:170)
> [java] at
java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown
> Source)
> [java] ; nested exception is:
> [java] javax.transaction.xa.XAException
> [java] at
weblogic.rjvm.BasicOutboundRequest.sendReceive()Lweblogic.rmi.spi.InboundRes
ponse;(BasicOutboundRequest.java:108)
> [java] at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(Lweblogic.rmi.extensions.s
erver.RemoteReference;Lweblogic.rmi.extensions.server.RuntimeMethodDescripto
r;[Ljava.lang.Object;Ljava.lang.reflect.Method;)Ljava.lang.Object;(ReplicaAw
areRemoteRef.java:284)
> [java] at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(Ljava.rmi.Remote;Lweblogic
.rmi.extensions.server.RuntimeMethodDescriptor;[Ljava.lang.Object;Ljava.lang
.reflect.Method;)Ljava.lang.Object;(ReplicaAwareRemoteRef.java:244)
> [java] at
Case463495.Stateless_soycq8_EOImpl_812_WLStub.sendMessageWrap(Ljava.lang.Int
eger;Ljava.lang.Integer;Ljava.lang.String;ZZ)V(Unknown
> Source)
> [java] at Case463495.Client.run()V(Client.java:103)
> [java] at Case463495.Client.sendMessage()V(Client.java:132)
> [java] at
Case463495.Client.main([Ljava.lang.String;)V(Client.java:195)
> [java] Caused by: javax.transaction.xa.XAException
> [java] at
com.tibco.tibjms.TibjmsXAResource.end(TibjmsXAResource.java:157)
> [java] at
weblogic.deployment.jms.WrappedXAResource_com_tibco_tibjms_TibjmsXAResource.
end(Unknown
> Source)
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.end(XAServerResourceInfo.
java:1124)
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.internalDelist(XAServerRe
sourceInfo.java:325)
> [java] at
weblogic.transaction.internal.XAServerResourceInfo.delist(XAServerResourceIn
fo.java:255)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.delistAll(ServerTransact
ionImpl.java:1408)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.delistAll(ServerTransact
ionImpl.java:1396)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(ServerTran
sactionImpl.java:1932)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTra
nsactionImpl.java:252)
> [java] at
weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransaction
Impl.java:221)
> [java] at
weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:289)
> [java] at
weblogic.ejb20.internal.StatelessEJBObject.postInvoke(StatelessEJBObject.jav
a:141)
> [java] at
Case463495.Stateless_soycq8_EOImpl.sendMessageWrap(Stateless_soycq8_EOImpl.j
ava:112)
> [java] at
Case463495.Stateless_soycq8_EOImpl_WLSkel.invoke(Unknown Source)
> [java] at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
> [java] at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java
:108)
> [java] at
weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
> [java] at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubjec
t.java:353)
> [java] at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
> [java] at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
> [java] at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:3
0)
> [java] at
weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
> [java] at
weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
> [java] at java.lang.Thread.startThreadFromVM(Unknown Source)
>
>
> Apologies in advance if this need to be posted in the JTA news group..
>
> Any ideas?
>
> Murali
>
-
Hi,
I'm getting following warning when I try to connect two JMS Bridge Destinations (source WebLogic and destination ActiveMQ) through a Bridge.
<Warning> <Connector> <BEA-190032> << eis/jms/WLSConnectionFactoryJNDINoTX > ResourceAllocationException thrown by resource adapter on call to ManagedConnectionFactory.createManagedConnection(): "javax.resource.ResourceException: Failed to start the connection ">
But when I test it by sending message WL does not forward that message to destination queue (ActiveMQ).
When I try to send message individually in WL Queue and MQ Queue from POJO class to test it it works fine.
Please find the setting details
JMS Bridge Destination for ActiveMQ
Adapter JNDI Name: eis.jms.WLSConnectionFactoryJNDINoTX
Classpath: path of activemq-core-5.4.2.jar
Connection URL: tcp://***.***.***.***:****
Initial Context Factory: org.apache.activemq.jndi.ActiveMQInitialContextFactory
Connection Factory JNDI Name: QueueConnectionFactory
Destination JNDI Name: destination queue
Destination Type: Queue
JMS Bridge Destination for WebLogic
Adapter JNDI Name: eis.jms.WLSConnectionFactoryJNDINoTX
Classpath:
Connection URL: t3://***.***.***.***:****
Initial Context Factory: weblogic.jndi.WLInitialContextFactory
Connection Factory JNDI Name: JNDI name of Connection Factory which is created in JMS module
Destination JNDI Name: JNDI name of Queue which is created in JMS Module
Destination Type: Queue
User Name: given
Password: given
Thanks in advance
Regards
Amlendu
Edited by: user7468329 on May 1, 2011 10:01 PMHi,
There's troubleshooting information in the bridge documentation.
google: FAQs: WebLogic Messaging Bridge site:oracle.com
Hope this helps.
Tom -
Remote JMS Queue in Non-Clustered Environment
We have two hosts, both running WLS 8.1, that are not clustered. We would like
to create a queue on the first and be able to read it from the second. Is this
possible? How does one go about setting this up?
Paul wrote:
> We have two hosts, both running WLS 8.1, that are not clustered. We would like
> to create a queue on the first and be able to read it from the second. Is this
> possible? How does one go about setting this up?
Hi Paul,
This a common use case. Even user transactions
can include operations from both servers.
The remote server just looks a regular
client as far as the JMS server is concerned.
I recommend using MDBs - which can be be configured with a URL
and connection factory, messaging bridges, and/or foreign destination
wrappers. In addition, you can use the JMS resource reference
pooling feature to pool the "foreign" JMS server's resources.
For information you can start here:
http://edocs.bea.com/wls/docs81/jms/intro.html#jms_features
and here:
http://dev2dev.bea.com/technologies/jms/index.jsp
Important: As documented, for various reasons, some not
having to do with JMS, you will need to ensure the following are
true to enable "non-clustered" communication:
- all domains should be named uniquely
- all wl servers must be named uniquely
- all jms servers must be named uniquely
- all jms stores must be named uniquely
Tom
Maybe you are looking for
-
Setting up multiple iphones and a family calendar
I would really appreciate some feedback with this--please let me explain my situation and someone help me out *Family A has a mom, dad, and two kids all with iphones. *Family A each have their own verizon mail account *Family A has a master Google C
-
Backup and data transfer from old to new iphone
I recently upgraded to the iphone 5s from iphone 4 and need to backup and transfer data from old phone to the new phone. I want to backup using itunes rather than using icloud. Do I need to disable icloud backup on the old phone before I start the
-
When I tried to load some mp3 files on to my samsung brightside I looked under card memory and my songs were there but when I clicked on my music it said no memory available remove files and I have an 8 gb micro sd card in and there is nothing else o
-
How can we change hyperlinks in Adobe Flash CS4?
Hello, I've got this .fla file but I can't change the name or the hyperlinks for the navigation menu in the flash. I just can't find the symbols in the designer which are appearing as the menu options in the .swf file. Can anybody please check it if
-
Can't upgrade from pdf converter to pro
I can't upgrade from the pdf converter to the pro...It gives me an error message and sends me here to support. How do I upgrade? "Unable to complete request To complete your upgrade, please contact customer support."