Deploy MDBs in Different WL Instances Subscribed to Same Topic
Let's say I have MDBs X, Y, and Z, each needing to be deployed to a different Weblogic
server. All need to subscribe to the same Topic. How is this done? Specifically,
how is the Topic configured and how are the MBDs deployed?
Thanks,
Jim Goodwin
For your reading enjoyment, I'm posting some of my
internal notes on durable subscriber MDB's. This consolidates
newsgroup information in one place.
Jim Goodwin wrote:
> "Jim Goodwin" <[email protected]> wrote:
>
>>Let's say I have MDBs X, Y, and Z, each needing to be deployed to a different
>>Weblogic
>>server. All need to subscribe to the same Topic. How is this done? Specifically,
>>how is the Topic configured and how are the MBDs deployed?
>>
>>Thanks,
>>
>>Jim Goodwin
>
>
> Bah! Nevermind. I found the information I was looking for in other threads.
A durable topic subscriber MDB uses its name to generate its client-id.
Since JMS enforces uniqueness on this client-id, this means that if a durable
subscriber MDB is deployed to multiple servers only one server will be able
to connect. Some applications want a different behavior where
each MDB pool on each server gets its own durable subscription.
The MDB durable subscription id, which must be unique on its topic, comes from:
1) <jms-client-id>MyClientID</jms-client-id>
(the weblogic dtd)
2) if (1) is not set then the client-id
comes from the ejb name.
The durable subscription is uniquely identified within a cluster by a
combination of "connection-id" and "subscription-id". Only one active
connection may use a particular "connection-id" within a WebLogic cluster.
The connection id comes from:
1) The "ClientId" attribute configured on the WebLogic connection factory.
This defaults to null. Note that if the ClientId is set on a connection
factory, only one connection created by the factory
may be active at a time.
2) If (1) is not set, then, as with the subscriber-id,
the connection-id is derived from jms-client-id descriptor attribute:
<jms-client-id>MyClientID</jms-client-id>
(the weblogic dtd)
3) If (1) and (2) are not set, then, as with the subscriber-id,
the connection-id is derived from the ejb name.
Work-around:
A) Create a custom connection-factory for each server:
1) configure "JNDIName" to the same value across all servers
("myMDBCF" in this example)
2) configure "ClientId" to a unique value per server
3) enable "UserTransactionsEnabled"
4) enable "XAConnectionFactoryEnabled"
5) set "AcknowledgePolicy" to "ACKNOWLEDGE_PREVIOUS"
6) target the CF at a single WebLogic server
(Number 5 is required for non-transactional topic MDBs)
B) In the MDB's weblogic-ejb-jar.xml descriptor, set the MDB's connection
factory to the JNDI name of the custom connection factories configured in
(A). Optionally, also specify the subscriber-id via the jms-client-id
attribute.
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>exampleBean</ejb-name>
<message-driven-descriptor>
<connection-factory-jndi-name>myMDBCF</connection-factory-jndi-name>
<jms-client-id>myClientID</jms-client-id>
</message-driven-descriptor>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
C) Target the application at the same servers that have the custom connection
factories targeted at them.
Notes/Limitations:
1) If the MDB is moved from one server to another, the MDB's corresponding
connection-factory must be moved with it.
2) This work-around will not work if the destination is not in the same
cluster as the MDB. (The MDB can not use the local connection factory, which
contains the connection-id, as connection factories do not work unless they
are in the same cluster as the destination.)
3) This work-around will not work for non-WebLogic JMS topics.
Similar Messages
-
Different weblogic instances listening to a topic
Hi,
I have a scenario like this---.
I have 2 weblogic servers running on two different m/c s .They are NOT in a cluster.They
have their own JMS Servers running.There are some queues and one topic on each
machine.There is a router which routes incoming messages to these servers and
responses back.Each wl server has the same application running(The application
that processes the messages) and is totally unware of the existense of the other
server.
I want that for some particular message delivered to a topic on one m/c the
other m/c should also receive that particular message.
e.g. a message that certain system configuration parameters are updated and all
servers should synchronize their cached system parameters with the database.
Is it possible to meet this requirement either by configuration or programatically.The
application has MDBs listening to the messages.
I am using WL server 6.1
Thanx ,
sunil
You can do this yourself by writing a forwarder that opens up connections to
both servers receiving on one and forwarding to the other. You can also
use the messaging bridge. However, if A is forwarding to B and B is
forwarding to A it is cyclic. You need to discriminate the forwarded
messages so your forwarder does not forward messages back to the original
server.
Of course you could upgrade to 7.0, use a cluster and a distributed topic.
All the forwarding is taken care of, you don't have to worry about cycles,
and the forwarded messages maintain their original message ids.
_sjz.
"Sunil Naik" <[email protected]> wrote in message
news:[email protected]...
>
> Hi,
> I have a scenario like this---.
> I have 2 weblogic servers running on two different m/c s .They are NOT in
a cluster.They
> have their own JMS Servers running.There are some queues and one topic on
each
> machine.There is a router which routes incoming messages to these servers
and
> responses back.Each wl server has the same application running(The
application
> that processes the messages) and is totally unware of the existense of the
other
> server.
> I want that for some particular message delivered to a topic on one m/c
the
> other m/c should also receive that particular message.
> e.g. a message that certain system configuration parameters are updated
and all
> servers should synchronize their cached system parameters with the
database.
> Is it possible to meet this requirement either by configuration or
programatically.The
> application has MDBs listening to the messages.
>
> I am using WL server 6.1
>
> Thanx ,
> sunil
-
DB adapter with different db instance
Hi,
I need to configure different db instance into the same data base adapter.
I've one instance for publisher schema and another one for subscriber schema .
In the adapter.ini there are parameters only for OAI (publisher schema)
db_bridge_schema1_host=vvvvv
db_bridge_schema1_port=1521
db_bridge_schema1_instance=ora92
It's possible set a db_bridge_schema_instance for the spoke writer (subscriber schema)?
Thanks.
Regards.Hi,
I don't think you could configured single DB adaptert for wo schemas .
But you can always copy the main adapter and rename it(have two seperate adapters), one adapter for subscriber event and another for the Publisher event.
Regards,
Larry -
Accessing a variable from different application instance in fmis
Hello everyone i like to know how to declare a global variable in FMS, so that i can access it from different application instance of a same application.
Thank.Hi,
In such a use case you can use persistent shared object to keep track of all connected users and the instances they are connected to. then when a user connects in application.xml you can check whether that user name and password is valid for a instance. This doc should help you get this achieved http://help.adobe.com/en_US/FlashMediaServer/3.5_Deving/WS5b3ccc516d4fbf351e63e3d11a0773d3 7a-7fff.html
Thanks,
Abhishek -
Hi Experts,
I have a typical situation in the LAB environment. Hope some one helps. I have Installed a SCOM 2012 R2 with SQL 2012 SP1 in a single server (Management group 1). I have installed another management group on another server using this SQL server for its database
so i have everything going fine.
The first management group has its reporting installed in the SQL server. For the second i created a new named instance for that. But i cannot run the SCOM setup in the SQL server (Also holding the Management group 1 MS) as 1 st reporting is already there.
When i run the setup it is asking me to repair it. I don't get the install option so i can install the reporting for management group 2 in the named instance.
Default instance is being used by the 1st management group.
Can any one figure a possibility for installing 2 SCOM reporting services for different management groups in a same SQL 2012 server please.
Gautam.75801Hi Yan Li,
Thank you for the reply. So as you are aware If i need to instal reporting, i need to run the SCOM 2012 R2 setup in the SQL server and select reporting and select the
instance and then mention the management server there right. I am not getting that option there it is asking me to remove or repair the existing installation as there is already a SCOM entire setup including reporting there. As it is a lab there is no problem
in testing. I have 2 reporting instances. Any suggestions for me on how to overcome this issue and deploy the second reporting in the new named instance ?
Below is the screenshot of the error what i am talking about when i run SCOM 2012 R2 setup to install reporting in the SQL server
When i click on add feature reporting is greyed out (As already 1st management groups reporting is installed)
When i click on remove or repair it
uninstalls the existing one. But i want both SCOM 2012 r2 reporting to be there(For both Management group). Is it possible ? If yes What is the trick to run the setup ?
Gautam.75801 -
Deploy multiple instances of the same stateless session EJB
I have a stateless session bean.
The methods on the bean operate against DB tables.
Q: Can I deploy multiple instances of the same stateless session bean, but specify a different JNDI/datasource name in the deployment descriptor?
The method calls are all enclosed within a single invocation, just that I need to hit different databases (all with the same schema), and Id like to be able to lookup the EJB via a different JNDI name, and have the exact same functionality, just against different deployed datasources.
Does the spec allow/support this?
If not, any suggestions as to how to achieve this sort of functionality?
Im using JBoss 3.2.1 on Solaris, so Im not sure whether or not this is a JBoss "issue" or a limitation of the EJB Spec (or me being just plain wrong and trying to do something the "wrong way")
NickI have a stateless session bean.
The methods on the bean operate against DB tables.
Q: Can I deploy multiple instances of the same
stateless session bean, but specify a different
JNDI/datasource name in the deployment descriptor?
The method calls are all enclosed within a single
invocation, just that I need to hit different
databases (all with the same schema), and Id like to
be able to lookup the EJB via a different JNDI name,
and have the exact same functionality, just against
different deployed datasources.
Does the spec allow/support this?
If not, any suggestions as to how to achieve this sort
of functionality?
Im using JBoss 3.2.1 on Solaris, so Im not sure
whether or not this is a JBoss "issue" or a limitation
of the EJB Spec (or me being just plain wrong and
trying to do something the "wrong way")
NickI haven't done it but judging from the deployment descriptors yes.
For example if I have two bounded datasources java:/Database1 and java:/Database2
Lets say I have a session bean called MySession, then in your ejb-jar.xml you would have (notice that the desc, display, and ejb-name are the only differences)
<session>
<description>MySessionAlpha</description>
<display-name>MySessionAlpha</display-name>
<ejb-name>MySessionAlpha</ejb-name>
<home>com.mycorp.MySessionRemoteHome</home>
<remote>com.mycorp.MySessionRemote</remote>
<local-home>com.mycorp.MySessionLocalHome</local-home>
<local>com.mycorp.MySessionLocal</local>
<ejb-class>com.mycorp.MySessionFacadeBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<resource-ref>
<res-ref-name>jdbc/DataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</session>
<session>
<description>MySessionBeta</description>
<display-name>MySessionBeta</display-name>
<ejb-name>MySessionBeta</ejb-name>
<home>com.mycorp.MySessionRemoteHome</home>
<remote>com.mycorp.MySessionRemote</remote>
<local-home>com.mycorp.MySessionLocalHome</local-home>
<local>com.mycorp.MySessionLocal</local>
<ejb-class>com.mycorp.MySessionFacadeBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<resource-ref>
<res-ref-name>jdbc/DataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</session>
But now in the jboss.xml, we will have the following elements. What you may notice is that are bound to different remote and local jndi names. But the resource bindings are very different. The res-ref-name stays the same, but the jndi-name are different. I think this will work for you.
<session>
<ejb-name>MySessionAlpha</ejb-name> <jndi-name>ejb/com/mycorp/MySessionAlphaRemoteHome</jndi-name> <local-jndi-name>ejb/com/mycorp/MySessionAlphaLocalHome</local-jndi-name>
<resource-ref>
<res-ref-name>jdbc/datasource</res-ref-name>
<jndi-name>java:/Database1</jndi-name>
</resource-ref>
</session>
<session>
<ejb-name>MySessionBeta</ejb-name> <jndi-name>ejb/com/mycorp/MySessionBetaRemoteHome</jndi-name> <local-jndi-name>ejb/com/mycorp/MySessionBetaLocalHome</local-jndi-name>
<resource-ref>
<res-ref-name>jdbc/datasource</res-ref-name>
<jndi-name>java:/Database2</jndi-name>
</resource-ref>
</session> -
URGENT : Error Deploying MDB in 9ias 9.0.3
Hi
I am using OJMS and am trying to deploy SLSB and MDB with durable subscriptions to a topic. I have configured the queue table and topic properly. While trying auto deploy of OC4J i am getting the following error...
Auto-deploying MCAppBEAN.jar (No complete previous deployment found)... Error compiling C:\Oracle9iAS\AppSvr\j2ee\home\appli
ations\MCApplication/MCAppBEAN.jar: Syntax error in source
Oracle9iAS (9.0.3.0.0) Containers for J2EE initialized
It says there is error in the source but which source? It does not log any error message into any file ( or is there any file which I dont know about? ).
When i tried to deploy the application manually ( admin.jar ) it gave me the following exception...
com.evermind.compiler.CompilationException: Syntax error in source
at com.evermind.compiler.FileLinkedCompilation.loadObjects(FileLinkedCompilation.java:196)
at com.evermind.compiler.FileLinkedCompilation.run(FileLinkedCompilation.java:145)
at java.security.AccessController.doPrivileged(Native Method)
at com.evermind.compiler.FileLinkedCompiler.compile(FileLinkedCompiler.java:53)
at com.evermind.server.ejb.compilation.Compilation.compileClasses(Compilation.java:463)
at com.evermind.server.ejb.compilation.Compilation.compile(Compilation.java:323)
at com.evermind.server.administration.ServerApplicationInstallation.finish(ServerApplicationInstallation.java:556)
at java.lang.reflect.Method.invoke(Native Method)
at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:119)
at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:48)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:803)
at java.lang.Thread.run(Unknown Source)
Could any body help me with this... Is there some place where I can configure to see the error messages? Has anybody faced this error earlier?
Thanks in Advance...I have discovered a strange thing. I created a new OC4J instance which I called it: Intelap
When I deploy to the recently created instance Intelap, jdeveloper success. But when I set OC4J_home in the optional instance field, I got the previous error.
Sergio -
Multiple BC4J apps deployed in single 9iAS OC4J instance
Deploying my BC4J/UIX applications in a single Oracle 9iAS 9.0.2 OC4J instance, causes some of my applications not to find their BC4J configurations. After restarting the OC4J instance some applications start to find the configurations, while some lose the ability arbitrarily. When I deploy each of them in a different OC4J instance, then everything works fine.
The problem appears also at my client's site. My client has all the latest patches applied to the 9iAS server and they can't afford upgrading to 10g or running every application in separate OC4J instance.
The BC4J/UIX applications are developed with JDev 9.0.3.4. and the BC4J and UIX libraries of the application server are updated to the versions of JDev 9.0.3.4. My development Oracle9iAS runs on Windows 2000 and my client has it on Sun Solaris.
The error trace I get from applications that can't find the configuration looks like this:
oracle.jbo.JboException: JBO-26034: Cannot find Configuration with name :LoginAM
at oracle.jbo.uicli.mom.JUMetaObjectManager.getSessionDef(JUMetaObjectManager.java:401)
at oracle.jbo.uicli.mom.JUMetaObjectManager.createPool(JUMetaObjectManager.java:509)
at oracle.jbo.http.HttpContainer.findSessionCookie(HttpContainer.java:636)
at oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.getSessionCookie(Unknown Source)
at oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useRootAppModule(Unknown Source)
at oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useRootAppModule(Unknown Source)
at oracle.cabo.data.jbo.servlet.RootAppModuleRegistryImpl.useAll(Unknown Source)
at oracle.cabo.data.jbo.xml.parse.JboParserExtensionImpl$JboPageDescription.renderStarted(Unknown Source)
at oracle.cabo.servlet.ui.UINodePageRenderer.renderPage(Unknown Source)
at oracle.cabo.servlet.AbstractPageBroker.renderPage(Unknown Source)
at oracle.cabo.servlet.PageBrokerHandler.handleRequest(Unknown Source)
at oracle.cabo.servlet.UIXServlet.doGet(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:244)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:336)
at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:59)
at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:283)
at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:523)
at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:269)
at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:735)
at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].server.http.AJPRequestHandler.run(AJPRequestHandler.java:151)
at com.evermind[Oracle9iAS (9.0.2.0.0) Containers for J2EE].util.ThreadPoolThread.run(ThreadPoolThread.java:64)
Best Regards!
Mihkel NõgesIs deploying multiple BC4J applications in single OC4J instance supported?
-
Looking up EJBs at different OC4J instances
Hi there,
I´m facing a little weird problem for looking up EJBs deployed at remote OC4J instancias. That is, my application runs at an OC4J instance at host A while some external components, needed by my application, run at an OC4J instance at host B.
Host A runs OC4J version 10.1.3.2 while host B runs OC4J version 10.1.3.3. When I try to lookup some EJB I get the following exception:
Caused by: java.io.InvalidClassException: oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl; local class incompatible: stream classdesc serialVersionUID = -7010736017799296921, local class serialVersionUID = 5036353448034635021
It seems that the serialVersionUID field was not overriden in the class ManagedConnectionFactoryImpl, so each OC4J version has a ManagedConnectionFactoryImpl class with a distinct serial version.
Well, how do I turn around this? Is this a limitation of OC4J that I should cope with (not being able to exchange data through components deployed at different OC4J versions)?
Regards,
LorenoThere are some days since this thread was created. Does the miss of an answer means that it is no possible to exchange data through EJBs deployed at different OC4J instancies, with different versions?
-
How deploy MDB example to SAP J2EE 6.20
Hi,
I need to <b>deploy a message driven bean to SAPJ2ee6.20</b>, , and for that first i tried to deploy MDB example(.ear file) from SAPj2ee Installation.
But at deployment phase, it generate exception.
How can i do this with succes?
Thanks a lot,Hi Bogdan,
please, do <i>not</i> post the same question three times into different categories - beneath, all three categories have been wrong, this is a deployment question not concerning EP or Java directly nor 6.40 preview, so you should have posted it to "WAS general".
<i>No</i>, please do <i>not</i> post it a fourth time... People will read it, and if there shouldn't be an answer...
It is frustrating for people who want to help to read "it generates an exception" - yeah, <i>which one</i>?!
Thanks for considering these hints in the future
Detlev -
I subscribed to iTunes Match and would like to sync my music on multiples devices that have different Apple IDs within the same iCloud family.
Can someone indicate the way to proceed?
Thanks.Hi,
You can't use family sharing or multiple Apple IDs with iTunes match.
ITunes match is only attached to Apple id that you used to subscribe.
Jim -
Can you run multiple APEX listeners for different instances on the same server
Please confirm that we can run multiple APEX listeners for different instances on the same server? Is it an xml setup configuration or do we need to do more??
Thank You,
Tony Miller
SmartDog Services
Austin, TXYes.. Just exactly what I was looking for...
Thanks Jari!!
Thank You,
Tony Miller
SmartDog Services
Austin, TX -
Deploying MDB in a cluster...
Have any one been successful at deploying a Message Driven Bean in a
cluster. The problem I am running in to is that on the second machine the
MDB tries to deploy but does not find the name of the queue in the JNDI
space. This is due to the fact that the JNDI replication has not occured
when the second server is starting up. Later, when the JNDI replication has
occured, the queue name DOES appear in the JNDI tree, but it's too late for
the MDB which failed to deploy.
Has any one gotten around this problem? Surely, there must be someone out
there who is also trying to deploy MDB in a cluster.
Thanks.
-AP_
Have any one been successful at deploying a Message Driven Bean in a
cluster. The problem I am running in to is that on the second machine the
MDB tries to deploy but does not find the name of the queue in the JNDI
space. This is due to the fact that the JNDI replication has not occured
when the second server is starting up. Later, when the JNDI replication has
occured, the queue name DOES appear in the JNDI tree, but it's too late for
the MDB which failed to deploy.
Has any one gotten around this problem? Surely, there must be someone out
there who is also trying to deploy MDB in a cluster.
Thanks.
-AP_
-
Viewing the deployed application in different browser
How to view the deployed content in different browsers rather than the default one ?
And how to run the Weblogic Server without running the jDeveloper. and how to view the deployed content from WLS in the browser?Hi,
How to view the deployed content in different browsers rather than the default one ?
You can change the browser to use in the preferences (Tools -- Preferences - Browser and Proxy settings)
And how to run the Weblogic Server without running the jDeveloper.
2 Options:
==========
a) download a stand alone Weblogic Server from OTN
b) Find the JDeveloper System directory in the user directory of your laptop. Search for startWebLogic.cmd and start it from the console
and how to view the deployed content from WLS in the browser?
Request it from a URL
host:port/java_ee_path/faces/view
Frank -
Connecting to two different database instances from a swing application.
Hi All,
I am developing a swing application which needs to interact with two different database instances of two different weblogic servers.
More eloborately,
I have some data in DB_Instance1 running on[b] Weblogic_Server1 and I need to insert the same data into DB_instance2 running on Weblogic_server2. Is it possible. Could some explain me how to do that..
Thanks in advance...
Sreekanth.Hi Rick,
Try logging onto both Server first. You'll have to use either 2 separate ODBC DSN's or 2 separate OLE DB connections. Set them both for Trusted Authentication, you'll have to configure that on the Server also.Then try your query.
If that doesn't work then you'll have to create a Stored Procedure or View that can link the 2 Server side.
Thank you
Don
Maybe you are looking for
-
Satellite M70-340: I cannot see the DVD schort cut menu after reinstallation
Hi, I just recently bought Toshiba M70-340 2 weeks ago. Now I learn that there is better Toshiba comparing the my one. My question is I cannot see on the screen the DVD schort cut menu. First time when I opened it it was on the rıght handside of scre
-
HP 15-g049AU Notebook PC OS not supported by HP Service Center
I recenlty bought a HP 15-g049AU Notebook PC [K5B45PA], from Flipkart on 19th October 2014. It came with Windows 8.1 preinstalled. In the box I didnlt received any CD. Now , when I tried to reset the Laptop it got stuck in between the process and aft
-
Use sy-uname/partner guid to check partner function
Hi! I have a userID, and would like to use it to check to partner function. What FM can I use? Well, I know that <b>FM "BP_CENTRALPERSON_GET"</b> is able to find the <b>Partner GUID</b>. But how should I find for the Partner Function, such as he
-
Adobee Muse crashes everytime I attempt to export or publish
Every time I attempt to publish, export, or preview my Muse site, the program crashes. It's a very small file size right now (2,432 KB) and I'm using the latest version of Adobe Muse CC 2014. I'm working with Adobe Muse 2014 for PC. I can preview, bu
-
Keep getting the message: Setup can't continue because Outlook isn't configured to have a default profile.Check your Outlook settings and Try Again. iCloud is partially installed on my PC - Contact information is fully integrated with my iPhone - gr