2 non-clustered weblogic servers, 1 MQ queue. Messaging bridge fairness
Hey all,
More of a general question. Has anyone ever had 2 non-clustered
servers, each with a messaging bridge, pulling from one queue? If so, how is
the fairness of the machines pulling.
Assuming same machines / same configurations for the weblogic servers,
should it be
approximately fair?
Just want to verify that if the pulling machine sees more messages after
pulling it's batch,
it doesn't keep the channel locked or antyhing, before we pursue this
option.
Thanks much,
Greg
Hi Greg,
The consumer fairness is up to the JMS provider, which sees the bridge
as a regular consumer no different from any other client consumer.
If the queue being pulled from is a WebLogic 6.0 or greater queue then
fairness will be observed. (I'm not sure about earlier versions.) Of
course, this "fairness" is proportional to the rates at which the
consumers consume.
There is no such guarantee for other providers. And in fact, we (BEA)
have noticed that some of the other well-known JMS vendors do
not exhibit fairness.
Tom, BEA
Greg Kaestle wrote:
> Hey all,
>
> More of a general question. Has anyone ever had 2 non-clustered
> servers, each with a messaging bridge, pulling from one queue? If so, how is
> the fairness of the machines pulling.
> Assuming same machines / same configurations for the weblogic servers,
> should it be
> approximately fair?
>
> Just want to verify that if the pulling machine sees more messages after
> pulling it's batch,
> it doesn't keep the channel locked or antyhing, before we pursue this
> option.
>
> Thanks much,
> Greg
>
>
Similar Messages
-
How to connect one IIS server to multiple non clustered WebLogic servers
I have the following installed on Win2K Servers:
IIS 6
BEA Weblogic 6.1 running some webservices
BEA Weblogic 8.1 running an application
-Both Weblogic servers are running on the same machine (different ports obviously), IIS is on a different machine on the same network.
I have the website currently configured so that jsp files and several servlets are forwarded to the 8.1 server. So: http://mysite.com/hello.jsp or http://mysite.com/myServlet will properly forward to the 8.1 instance.
What I want to do (and have been unable to do so thus far) is to setup IIS such that http://mysite.com/myServices will forward to the 6.1 instance.
I’ve tried to setup the 6.1 iisforward and isapi dll files in a separate folder with their own ini file but I get an Overlapped I/O operation is in progress whenever the 6.1 iisforward.dll file is loaded. (Application Protection is set to High)
Any suggestions?
Thanks.I have the following installed on Win2K Servers:
IIS 6
BEA Weblogic 6.1 running some webservices
BEA Weblogic 8.1 running an application
-Both Weblogic servers are running on the same machine (different ports obviously), IIS is on a different machine on the same network.
I have the website currently configured so that jsp files and several servlets are forwarded to the 8.1 server. So: http://mysite.com/hello.jsp or http://mysite.com/myServlet will properly forward to the 8.1 instance.
What I want to do (and have been unable to do so thus far) is to setup IIS such that http://mysite.com/myServices will forward to the 6.1 instance.
I’ve tried to setup the 6.1 iisforward and isapi dll files in a separate folder with their own ini file but I get an Overlapped I/O operation is in progress whenever the 6.1 iisforward.dll file is loaded. (Application Protection is set to High)
Any suggestions?
Thanks. -
Apache HTTP proxying for load balancing only to a group of non-clustered WL servers
Hi,
We're running WL Server 6.1 SP 2 on Solaris 2.8.
For the Apache HTTP proxy plugin, if you use the WebLogicCluster http.conf option,
do the WL servers you want to load balance across have to be part of a WebLogic
cluster (if you are prepared to do without failover, as I know it would need to be
a proper WL cluster to replicate session info for failover). Can you load balance
across a group of non-clustered WL servers, and maintain the user session to the
one WL server so that it doesn't switch between servers on alternate requests for
the same user session, or must the servers be configured as a WebLogic cluster?
Paul
We find that if you have a collection of WL servers that are not configured as a
cluster, that it will load balance alternate requests to each server, but it will
not pin a user to a single machine according to their session so for 2 servers, 2
differetn sessions get created, one on each machine.
Is this because it doesn't normally do this, but sends the user alternately to a
primary then secondary which works in a cluster because the session is replicated.
I thought the secondary was only used when the primary failed.
We're running WL Server 6.1 SP 2 on Solaris 2.8. >
> For the Apache HTTP proxy plugin, if you use the WebLogicCluster http.conf
option,
> do the WL servers you want to load balance across have to be part of a
WebLogic
> cluster (if you are prepared to do without failover, as I know it would
need to be
> a proper WL cluster to replicate session info for failover). Can you load
balance
> across a group of non-clustered WL servers, and maintain the user session
to the
> one WL server so that it doesn't switch between servers on alternate
requests for
> the same user session, or must the servers be configured as a WebLogic
cluster?
You don't have to use the clustering option. To get failover, you'll have to
use the JDBC persistence option of WL.
> We find that if you have a collection of WL servers that are not
configured as a
> cluster, that it will load balance alternate requests to each server, but
it will
> not pin a user to a single machine according to their session so for 2
servers, 2
> differetn sessions get created, one on each machine.
>
> Is this because it doesn't normally do this, but sends the user
alternately to a
> primary then secondary which works in a cluster because the session is
replicated.
> I thought the secondary was only used when the primary failed.
The primary/secondary stuff requires clustering. If Apache continues to
"load balance" after the first request, you need to either use JDBC session
persistence or use a different load balancer (like mod_jk for Apache or a
h/w load balancer with support for sticky).
Peace,
Cameron Purdy
Tangosol, Inc.
http://www.tangosol.com/coherence.jsp
Tangosol Coherence: Clustered Replicated Cache for Weblogic
"Paul Hammond" <[email protected]> wrote in message
news:[email protected]...
>
-
Load balancing, failover and fallback in Non-Clustered WebLogic environment
hi,
Has anyone implemented WebLogic 10.3.3 (or 10.3.4) in a Non-Clustered environment, but also got load balancing, failover and fallback work?
We were successful in getting failover working using t3://server1:7001,server2:7002 provider URL, but not load balancing or fallback.
The fallback is working when it was connecting to server2 and if we kill server2, then it switches to server1, but not when server2 is still running while server1 comes back.
All we need to find a way to enforce fallback to primary site, even if secondary which the client connected is still up and running and primary site comes back.
Any help appreciated.
Thanks.
Best regards,
Balahi,
Has anyone implemented WebLogic 10.3.3 (or 10.3.4) in a Non-Clustered environment, but also got load balancing, failover and fallback work?
We were successful in getting failover working using t3://server1:7001,server2:7002 provider URL, but not load balancing or fallback.
The fallback is working when it was connecting to server2 and if we kill server2, then it switches to server1, but not when server2 is still running while server1 comes back.
All we need to find a way to enforce fallback to primary site, even if secondary which the client connected is still up and running and primary site comes back.
Any help appreciated.
Thanks.
Best regards,
Bala -
Can a single JNDI tree be shared by multiple, non-clustered servers?
We have a situation involving multiple, but non-clustered, WebLogic servers,
say Server 1 and Server 2. A client needs to access an EJB which happens to
be located only on Server 2. We would prefer that the client not need to
know the exact location of the EJB, but use the naming service hosted by a
designated server (Server 1) to locate the EJB.
At a minimum, this would require that both servers bind their respective
EJB's into a common, shared JNDI naming tree hosted by Server 1.
Is this possible?
John Armstrong
WebLink Wireless, Inc.
[email protected]hi,
I have not tried this, althoug with the webogic rmi and weblogic jndi
implementation I would guess this is straightforward.
Binding remote objects in WL JNDI binds the stubs only, not the object
itself. The worst case scenario here would be for you to implement proxies
and bind them in JNDI, although I would guess that binding the home object
should give you the required functionality.
Just try it, rebind the home object on a different server than the one the
bean is deployed on and test. My guess is that it will work.
(I repeat : I have not tested this my self, this is just a suggestion)
Regards,
Anders M.
John N. Armstrong <[email protected]> skrev i
meldingsnyheter:3a93faba$[email protected]..
We have a situation involving multiple, but non-clustered, WebLogicservers,
say Server 1 and Server 2. A client needs to access an EJB which happensto
be located only on Server 2. We would prefer that the client not need to
know the exact location of the EJB, but use the naming service hosted by a
designated server (Server 1) to locate the EJB.
At a minimum, this would require that both servers bind their respective
EJB's into a common, shared JNDI naming tree hosted by Server 1.
Is this possible?
John Armstrong
WebLink Wireless, Inc.
[email protected] -
Problem in clustered weblogic 9.1 servers duplicating quartz jobs
We have a web application expected to run quartz job to insert one row in database, but it inserted 2 rows in database. The quartz job is kicked off by a servlet that is loaded when weblogic server is started.
I understand the qaurtz job should be clustered with jdbcjobstore, too.
My question is:
if clustered weblogic server is considered as one running instance and the quartz job is kicked by a java servlet that is preloaded when weblogic server started, how could a job shceduled at a specific time (example, 3am daily) will be run twice? i.e. two clustered welogic server each run the job once. Does that mean our weblogic server clustering is not configured right?
The two clustered weblogic servers are on separate Unix machine and synchronized in time.
Any idea for the problem? Just weblogic cluster side, not quartz side.
thanksThe "jsp:directive.include" tag is only valid in an well-formed XML file that specifies all the relevant namespaces. The "jsp:include" tag is used in a JSP file. I'll bet the beginning of your file shows that you don't have a valid and well-formed XML file.
If you found that "jsp:include" worked, then that confirms you have an ordinary JSP file here. Why are you trying to use the XML form? The result of "jsp:include" in a JSP file will be exactly the same as the analogous tag in an XML file. -
ASSERTION FAILED of replica-related stub in a non-clustered SLSB
Wl 6.1 sp2
Solaris 2.8
We have 50 SLSBs running on non-clustered WL servers. Yet we are seeing
the following ASSERTION FAILED error, which from the stacktrace seems to
hint the ejb stub is doing something cluster-related... I have attached
ejb-jar.xml of the offending bean; someone please verify we are not
building cluster-capable stubs, and if we are building the right stub,
please explain why the exception is happening. Thanks!
******** STACKTRACE
weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Assertion
violated ]
at weblogic.utils.Debug.assert(Debug.java:74)
at weblogic.rmi.cluster.BasicReplicaList.reset(BasicReplicaList.java:175)
at
weblogic.rmi.cluster.PrimarySecondaryReplicaHandler.setPiggybackResponse(Pri
marySecondaryReplicaHandler.java:94)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.setPiggybackResponse(ReplicaAware
RemoteRef.java:294)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java
:265)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java
:229)
at weblogic.rmi.internal.ProxyStub.invoke(ProxyStub.java:35)
at $Proxy14.getStatus(Unknown Source)
at
com.go2.dtc.service.AccountStatus.accountIsOnline(AccountStatus.java:57)
******* EJB-JAR.XML
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise
JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<home>com.go2.ejb.services.accountservice.AccountServiceHome</home>
<remote>com.go2.ejb.services.accountservice.AccountService</remote>
<ejb-class>com.go2.ejb.services.accountservice.AccountServiceBean</ejb-class
>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>getStatus</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>changeSearchListingStatus</method-name>
<method-params>
<method-param>int</method-param>
<method-param>java.lang.String</method-param>
</method-params>
</method>
<trans-attribute>RequiresNew</trans-attribute>
</container-transaction>
</assembly-descriptor>
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise
JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<home>com.go2.ejb.services.accountservice.AccountServiceHome</home>
<remote>com.go2.ejb.services.accountservice.AccountService</remote>
<ejb-class>com.go2.ejb.services.accountservice.AccountServiceBean</ejb-class
>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>getStatus</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>changeSearchListingStatus</method-name>
<method-params>
<method-param>int</method-param>
<method-param>java.lang.String</method-param>
</method-params>
</method>
<trans-attribute>RequiresNew</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>Hi Rajesh,
This error was reported on our QA system error log, and only occurred a
couple of times in a very specific time frame. I will ask QA again if it
has happened since the first report.
However, even if this bug is minor and not production-worthy, what I am more
concerned about is the fact that the stacktrace seem to indicate the bug is
cluster-related, when we set our SLSBs to be non-clustered. Can someone
please confirm, given the ejb-jar.xml and weblogic-ejb-jar.xml I've posted
below, that I have properly configured and deployed our beans to be
non-clustered? I don't want to introduce cluster overhead (and cluster
bugs) when we don't need to!
Gene
"Rajesh Mirchandani" <[email protected]> wrote in message
news:[email protected]...
The reason I asked you if it is readily reproducable is because I had seenthis
issue (support case) in WLS 6.1(no sp). The problem there was that itcould not
be reproduced again and so I did not analyze it further.
Is this happening under load ?
Gene Chuang wrote:
Hi Rob,
AccountStatus is calling AccountService, which is a SLSB. I have
attached
its ejb-jar.xml in my original post, and here's the corresponding
weblogic-ejb-jar.xml:
!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic6.0.0
EJB//EN' 'http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd'>
<!-- Generated XML! -->
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<stateless-session-descriptor>
<pool>
<max-beans-in-free-pool>100</max-beans-in-free-pool>
</pool>
<stateless-clustering>
<stateless-bean-is-clusterable>False</stateless-bean-is-clusterable>
>>
>>
<stateless-bean-methods-are-idempotent>False</stateless-bean-methods-are-ide
mpotent>
</stateless-clustering>
</stateless-session-descriptor>
<transaction-descriptor>
<trans-timeout-seconds>300</trans-timeout-seconds>
</transaction-descriptor>
<jndi-name>accountservice.AccountServiceHome</jndi-name>
</weblogic-enterprise-bean>
<transaction-isolation>
<isolation-level>TRANSACTION_READ_COMMITTED</isolation-level>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
</transaction-isolation>
</weblogic-ejb-jar>
"Rob Woollen" <[email protected]> wrote in message
news:[email protected]...
It looks like AccountStatus is calling a stateful session bean that
uses
in-memory replication. (The PrimarySecondary stub is only used forin-memory
replicated sfsb.)
Do you have any sfsb?
-- Rob
Gene Chuang wrote:
Wl 6.1 sp2
Solaris 2.8
We have 50 SLSBs running on non-clustered WL servers. Yet we are
seeing
the following ASSERTION FAILED error, which from the stacktrace
seems to
hint the ejb stub is doing something cluster-related... I haveattached
ejb-jar.xml of the offending bean; someone please verify we are not
building cluster-capable stubs, and if we are building the rightstub,
please explain why the exception is happening. Thanks!
******** STACKTRACE
weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[Assertion
violated ]
at weblogic.utils.Debug.assert(Debug.java:74)
atweblogic.rmi.cluster.BasicReplicaList.reset(BasicReplicaList.java:175)
at
weblogic.rmi.cluster.PrimarySecondaryReplicaHandler.setPiggybackResponse(Pri
marySecondaryReplicaHandler.java:94)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.setPiggybackResponse(ReplicaAware
RemoteRef.java:294)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java
:265)
at
weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java
:229)
at weblogic.rmi.internal.ProxyStub.invoke(ProxyStub.java:35)
at $Proxy14.getStatus(Unknown Source)
at
com.go2.dtc.service.AccountStatus.accountIsOnline(AccountStatus.java:57)
>>>>
******* EJB-JAR.XML
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise
JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<home>com.go2.ejb.services.accountservice.AccountServiceHome</home>
><remote>com.go2.ejb.services.accountservice.AccountService</remote>
<ejb-class>com.go2.ejb.services.accountservice.AccountServiceBean</ejb-class
>>>>>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>getStatus</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>changeSearchListingStatus</method-name>
<method-params>
<method-param>int</method-param>
<method-param>java.lang.String</method-param>
</method-params>
</method>
<trans-attribute>RequiresNew</trans-attribute>
</container-transaction>
</assembly-descriptor>
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise
JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<home>com.go2.ejb.services.accountservice.AccountServiceHome</home>
><remote>com.go2.ejb.services.accountservice.AccountService</remote>
<ejb-class>com.go2.ejb.services.accountservice.AccountServiceBean</ejb-class
>>>>>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>getStatus</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>accountservice.AccountServiceHome</ejb-name>
<method-intf>Remote</method-intf>
<method-name>changeSearchListingStatus</method-name>
<method-params>
<method-param>int</method-param>
<method-param>java.lang.String</method-param>
</method-params>
</method>
<trans-attribute>RequiresNew</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>--
Rajesh Mirchandani
Developer Relations Engineer
BEA Support -
Weblogic 81 Messaging Bridge Logs
Hi All,
Do you know how can I change the weblogic logs only for the Messaging Bridge from Info level to Error level - I dont want to change the weblogic server log level to Error. Messaging Bridge is logging a lot of info at Info level which I dont want. I tried to use - changing Debug to Error but no luck.
-Dweblogic.Debug.DebugMessagingBridgeStartup=true
-Dweblogic.Debug.DebugMessagingBridgeRuntime=true
Thanks much,
- AnandI've heard that 9x and later logging has ways to configure log message suppression for a specific log message number or perhaps even specify a log level for a specific log message handler like bridge logging, but I don't know if there's something similar to 8.1. Here are a couple 9+ links:
http://www.gexperts.com/blog/archives/2008/06/entry_356.html
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/logging/filtering.html
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
-
Transaction span two WLS managed servers (non-clustering)
(Weblogic 6.1 - non-clustering version)
I have two managed servers configured on a single machine on different
ports, and I am not using clustering weblogic. Assuming I have EJB A
deployed on managed server 1, and EJB B deployed on managed server 2.
I want to have EJB A to invoke EJB B. In EJB A, I guess I will
probably create the InitialContext with the URL of managed server 2,
then do the JNDI look up and call EJB B.
My questions are:
- Can weblogic handle transaction that spans two managed servers
(non-clustering setting)?
- Does weblogic use XA to handle transaction between managed servers?
- Do I need to do any JTA code in order to achieve that (instead of
just letting the EJB container to handle the transaction for me)?
Thanks in advance!
B.L.Hi,
"benson" <[email protected]> wrote in message
news:[email protected]..
(Weblogic 6.1 - non-clustering version)
I have two managed servers configured on a single machine on different
ports, and I am not using clustering weblogic. Assuming I have EJB A
deployed on managed server 1, and EJB B deployed on managed server 2.
I want to have EJB A to invoke EJB B. In EJB A, I guess I will
probably create the InitialContext with the URL of managed server 2,
then do the JNDI look up and call EJB B.
My questions are:
- Can weblogic handle transaction that spans two managed servers
(non-clustering setting)?Yes, it can.
- Does weblogic use XA to handle transaction between managed servers?Yes, it does. Make sure you use TX DataSources. If the servers are connected
to different databases, TX DataSources should be based on connection pools
used XA drivers.
- Do I need to do any JTA code in order to achieve that (instead of
just letting the EJB container to handle the transaction for me)?No, you don't. WebLogic will take care about handling
distributed TXs.
Regards,
Slava Imeshev -
Hi,
I am trying to deploy an EJB module have 4-5 EJB's on weblogic 8.1 through JBuilder.
I am getting following error during deployment.
Exception:weblogic.management.ApplicationException: prepare failed for Sample.jar
Module: Sample.jar Error: Exception preparing module: EJBModule(Sample.jar,status=NEW)
Unable to deploy EJB: SampleBean from Sample.jar:
weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Cannot export non
clusterable object with jndiName ]
at weblogic.utils.Debug.assertion(Debug.java:57)
at weblogic.rmi.extensions.server.ServerHelper.exportObject(ServerHelper.java:272)
at weblogic.ejb20.internal.BaseEJBHome.setup(BaseEJBHome.java:95)
at weblogic.ejb20.internal.StatelessEJBHome.setup(StatelessEJBHome.java:67)
at weblogic.ejb20.deployer.ClientDrivenBeanInfoImpl.prepare(ClientDrivenBeanInfoImpl.java:979)
at weblogic.ejb20.deployer.EJBDeployer.setupBeanInfos(EJBDeployer.java:983)
at weblogic.ejb20.deployer.EJBDeployer.prepare(EJBDeployer.java:1283)
at weblogic.ejb20.deployer.EJBModule.prepare(EJBModule.java:477)
at weblogic.j2ee.J2EEApplicationContainer.prepareModule(J2EEApplicationContainer.java:2962)
at weblogic.j2ee.J2EEApplicationContainer.prepareModules(J2EEApplicationContainer.java:1534)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1188)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1031)
at weblogic.management.deploy.slave.SlaveDeployer$ComponentActivateTask.prepareContainer(SlaveDeployer.java:2602)
at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.createContainer(SlaveDeployer.java:2552)
at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.prepare(SlaveDeployer.java:2474)
at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask(SlaveDeployer.java:798)
at weblogic.management.deploy.slave.SlaveDeployer.prepareDelta(SlaveDeployer.java:507)
at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate(SlaveDeployer.java:465)
at weblogic.drs.internal.SlaveCallbackHandler$1.execute(SlaveCallbackHandler.java:25)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
Any clue?, what its talking about?
Thanks
NareshHi,
I am trying to deploy an EJB module have 4-5 EJB's on weblogic 8.1 through JBuilder.
I am getting following error during deployment.
Exception:weblogic.management.ApplicationException: prepare failed for Sample.jar
Module: Sample.jar Error: Exception preparing module: EJBModule(Sample.jar,status=NEW)
Unable to deploy EJB: SampleBean from Sample.jar:
weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Cannot export non
clusterable object with jndiName ]
at weblogic.utils.Debug.assertion(Debug.java:57)
at weblogic.rmi.extensions.server.ServerHelper.exportObject(ServerHelper.java:272)
at weblogic.ejb20.internal.BaseEJBHome.setup(BaseEJBHome.java:95)
at weblogic.ejb20.internal.StatelessEJBHome.setup(StatelessEJBHome.java:67)
at weblogic.ejb20.deployer.ClientDrivenBeanInfoImpl.prepare(ClientDrivenBeanInfoImpl.java:979)
at weblogic.ejb20.deployer.EJBDeployer.setupBeanInfos(EJBDeployer.java:983)
at weblogic.ejb20.deployer.EJBDeployer.prepare(EJBDeployer.java:1283)
at weblogic.ejb20.deployer.EJBModule.prepare(EJBModule.java:477)
at weblogic.j2ee.J2EEApplicationContainer.prepareModule(J2EEApplicationContainer.java:2962)
at weblogic.j2ee.J2EEApplicationContainer.prepareModules(J2EEApplicationContainer.java:1534)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1188)
at weblogic.j2ee.J2EEApplicationContainer.prepare(J2EEApplicationContainer.java:1031)
at weblogic.management.deploy.slave.SlaveDeployer$ComponentActivateTask.prepareContainer(SlaveDeployer.java:2602)
at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.createContainer(SlaveDeployer.java:2552)
at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.prepare(SlaveDeployer.java:2474)
at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask(SlaveDeployer.java:798)
at weblogic.management.deploy.slave.SlaveDeployer.prepareDelta(SlaveDeployer.java:507)
at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate(SlaveDeployer.java:465)
at weblogic.drs.internal.SlaveCallbackHandler$1.execute(SlaveCallbackHandler.java:25)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
Any clue?, what its talking about?
Thanks
Naresh -
Running BizTalk on multiple non-clustered servers. Potential serious issue
Hi,
I have just discovered what has potential to be a fairly large issue in our current BizTalk Architecture. We are running BizTalk Server 2006 R2 on 2 different servers, running Windows Server 2003 R2. These servers are NOT clustered. Instead, BizTalk is installed
to both, configured on 1 and then on the 2nd, they have joined the existing BizTalk environment. We have 1 host with 2 host-instances for say an Orchestration Host. (So 1 Orchestration Host and then 1 Orchestration Host Instance on each server), we also have
a host instance for Receive and Send on each server.
This is a problem that I have identified on an application currently in UAT:
We have a routine called 'Recovery Mode'. It doesn't matter what Recovery Mode is but what does matter is that only a single instance can go into recovery mode at the same time.
Consider this:
bool inRecovery;
while (isBroken) {
if (!inRecovery){
inRecovery = true;
// Recover
inRecovery = false;
else {
// Wait, recheck until not in recovery, or fixed.
Imagine an instance on server 1 needs to go into recovery, it first checks the inRecovery flag, gets returned false so goes into recovery, let's say this takes 5 minutes to complete. During this time, an instance on server 2 needs to go into recovery, checks
the flag, but the flag on server 2 has not been set to true.... Now I have 2 instances in Recovery...
My questions are:
1. Can I cluster 2 non-clustered servers? I'd need to upgrade from Windows Server 2003 R2 Standard to Enterprise is that possible? If so, Can I simply upgrade and cluster the servers or would I need to format the disks?
2. If no to number 1, where would you store the 'inRecovery' flag'? I can't store in a DB as there will be slight cross over where instance 2 might return false in my example just as instance 1 is writing unless I can lock it on write or something.
Some advice would be greatly appreciated.
Thanks
RodTo answer your specific question:
1. Yes, but you would need to upgrade to at least Enterprise. Windows Server 2003 R2 Standard does not support clustering. IIRC, the upgrade from Standard to Enterprise is pretty easy, perhaps just a SKU change.
2. If you absolutely cannot upgrade Windows Server, then you'd have to store the state externally, such as SQL Server. There shouldn't be any concurrency issues if you do the check in the right sequence. Basically, begin a transaction, attempt
to UPDATE, return weather the UPDATE was successful, meaning that call grabbed the lock. If you check then update, yes, there is a miniscule chance both will return the same value but only one near-sumultaneous UPDATE will succeed. -
Error with running Singleton Service in a non-clustered mode
Hello,
I'm getting this error when try to deploy an app with defined Singleton Service in a WebLogic 10.3.5:
<Error> <Deployer> <localdomain> <AdminServer><[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default(self-tuning)'> <<WLS Kernel>> <><7785ef355ffde3d6:-4c7bfbbc:138dd48f82b:-8000-0000000000000002><1343742871514> <BEA-149231> <Unable to set the activation state to true for the application 'MyApp'.
weblogic.management.DeploymentException:
at weblogic.application.internal.flow.SingletonServicesFlow.activate(SingletonServicesFlow.java:67)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:636)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:205)
at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:58)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:184)
at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361)
at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:52)
at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200)
at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:31)
at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:170)
at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:124)
at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:181)
at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:97)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
Caused By: java.lang.IllegalArgumentException: Cannot add Singleton Service MySingletonService as SingletonServicesManager not started. Check if MigrationBasis for cluster is configured.
at weblogic.cluster.singleton.SingletonServicesManager.addConfiguredService(SingletonServicesManager.java:280)
at weblogic.cluster.singleton.SingletonServicesManager.addConfiguredService(SingletonServicesManager.java:297)
at weblogic.application.internal.flow.SingletonServicesFlow.activate(SingletonServicesFlow.java:65)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:637)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:54)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:205)
at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:58)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:184)
at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361)
at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:52)
at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200)
at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:31)
at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:170)
at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:124)
at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:181)
at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:97)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
It gets run only after deleting singleton-service entry from weblogic-application.xml:
<singleton-service>
<class-name>my.app.SingletonClass</class-name>
<name>MySingletonService</name>
</singleton-service>
Is it possible to run it in a non-clustered server without deleting Singleton entry from weblogic-application.xml?
ThanksDid this help you ??
Not sure if it's related as here the issue is with clustered/non clustred and versioning!! the application which the bug talks about. -
How a clustered weblogic environment handles orders balanced-wise??
Hi,
In a 2 managed clustered weblogic environment with OSM 7.0.3 and an external load balancer to balance the incoming traffic it is noticed from the managed servers that whichever server is scanning for orders and that is understood by the server's logs:
####<Oct 16, 2012 2:54:33 PM EEST> <Info> <oms> <> <osm_ms01> <Timer-9> <oms-internal> <> <fab6ae59fd53672b:704b5627:13a64686216:-8000-0000000000000010> <1350388473505> <BEA-000000> <cluster.ClusteredHandlerFactory: Querying for high activity orders across the cluster>
is the server that will serve a new order.
Is there a way to achieve a perfect load balance? In a test case of 200 orders all orders where processes by one node and it is the one that scans for new orders.
We configured the external load balancer to split the traffic..But nothing!! Is there an internal mechanism that gathers all orders that are send to multiple servers and executes them in the server that is currently scanning for orders ???
Is there in any manual or Oracle Support Document/note on how is decided in a multiple-clustered environment which server will execute orders???
Thx in advance!Hi Alexandros,
Here's some general information on load balancing:
1. With OSM order affinity, the managed server instance that receives the order (precisely, creates the OSM order) has sole ownership of the order. Other than specific circumstances, the ownership is not transferred, and thus processing of that order stays with that instance till completion.
2. The OSM web service (createOrder API) has no load balancing mechanism internally if HTTP is used as the transport. So if you only send orders to one managed server, that instance will create and thus own all these orders. In contrast, if you use JMS as the transport, it is load-balanced by the JMS distributed destination (provided you are not sending instead to member queues of the distribution destination).
Now, assuming you are using HTTP, you need to ensure that the Load Balancer is really round-robining on the 2 managed servers among HTTP messages of order submissions. Monitor your TCP pipes to verify.
A problem we've seen, is if you are using SoapUI with pre-emptive authentication disabled, the SOAP request without pre-emptive authentication will be rejected, causing a re-send. Because of LB, all orders ended up in one managed server, as the reject-then-accept SOAP message sequence becomes cyclic with odd-even round-robin. So, enable pre-emptive authentication to avoid that.
Btw, is your cartridge handling high-activity orders? If not, I have a suspicion that your pasted log message may be a red-herring.
Cheers,
Daniel Ho
OSM Product Management -
I'm having problems with binding the JNDI tree for the other than the first server
started in the cluster.
The error looks like this.
<2001-aug-22 14:31:41 GMT+02:00> <Error> <Cluster> <Conflict start: You tried
to bind an object under the name EngineRegTopic in the jndi tree. The object you
have bound weblogic.jms.common.DestinationImpl from 172.18.61.17 is non clusterable
and you have tried to bind more than once from two or more servers. Such objects
can only deployed from one server.>
How come?
/ Martin
I am afraid JMS is not clusterable in WL6.0. Maybe you could try 6.1.
"Martin" <[email protected]> ¼¶¼g©ó¶l¥ó
news:3b83ad87$[email protected]..
>
> I'm having problems with binding the JNDI tree for the other than the
first server
> started in the cluster.
> The error looks like this.
> <2001-aug-22 14:31:41 GMT+02:00> <Error> <Cluster> <Conflict start: You
tried
> to bind an object under the name EngineRegTopic in the jndi tree. The
object you
> have bound weblogic.jms.common.DestinationImpl from 172.18.61.17 is non
clusterable
> and you have tried to bind more than once from two or more servers. Such
objects
> can only deployed from one server.>
> How come?
> / Martin
Maybe you are looking for
-
How to connect from my Macbook Pro to Apple TV
All, How do I get my Macbook to connect to my Apple TV? Is it even possible?
-
User exit/BADI for tracing change of User Status in IW22
Hello, I am looking for a user exit or BADI that triggers whenever ther's a change made to User status field. eg. changing user status to APTC(Approved to be executed) I then need the exit/badi to trigger my workflow to send mails to list of reviewer
-
How to check whether a date is null or not in java ?
Plz do help me.
-
Hi. Friends. Unable to Pass Parameters in Visual Composer
Hi. Currently we are working with Visual Composer. Our scenario is like we have developed 3 Iviews in one page. we could be able to get result also. But our scenario is like whatever the values we give in First Ivie
-
Trouble sync between Agentry Client (SAP IM 4.0) and SMP 3.0
Hi, I have deployed and configured the SAP Inventory Manager 4.0 mobile app on SMP 3.0 and connected to backed (SAP) which was prepared with the corresponded add-ons and all that stuff. But something happened, I have two PDTs (Motorola MC9100), when