-
1. Re: Single Client. Multiple Initial contexts not working.
achetan Sep 2, 2005 12:04 AM (in response to xavierpayne2)Hi
i have faced the similar problem in JBOSS 4.0.1 which was having following problem:
http://jira.jboss.com/jira/browse/JBAS-1442
I switched to JBOSS 4.0.2. In this versiob , it should work..
Please let me also know if you are able to figure put the answer as iam also spending lot of time on this.
Thanks
Chetan -
2. Re: Single Client. Multiple Initial contexts not working.
xavierpayne2 Sep 6, 2005 4:19 PM (in response to xavierpayne2)Loading up my client in the Eclipse debugger I can see that its the InvocationContext that is getting confused. So my lookups are indeed being performed correctly but at some point that I haven't pinned down just yet the InvocationContect is getting changed internally.
Attached is a screenshot of my debugger window with just the first three octaves of my ip censored for security reasons. The important things (to me) are the String intendedServerIP ... this is a variable I created to tell me what the object believes is the IP Address the remote ref it has is using.
Notice that further down in the tree under Endpoint ep = TCPEndpoint that it believes the String host is the other ip!
I can continue to dig but it seems like even with DiscoveryDisabled set to true in cluster-service.xml
and "jnp.disableDiscovery" set to true in my client side JNDI lookup and using port 1099 part of the code are still trying to act like each server I jndi to is part of the same cluster family.
Now that this is jacked into the debugger I can also attempt to provide more information if desired but I don't know what's most helpful to you guys.
Something also important to note is that the first few calls on this ejb do in fact work and call the correct server. So it seems as if the InvocationContext is changing on the fly between calls. -
3. Re: Single Client. Multiple Initial contexts not working.
xavierpayne2 Sep 6, 2005 4:36 PM (in response to xavierpayne2)Doh... I can't upload an image so here is a copy paste of the debug tree.
PublisherSequence this= PublisherSequence (id=27) String intendedServerIP= "jnp://x.x.155:1099" PublisherSequenceSecurityProxyRemote pubSeq= $Proxy3 (id=40) InvocationHandler h= ClientContainer (id=86) InvocationContext context= InvocationContext (id=90) Map context= HashMap (id=111) Set entrySet= HashMap$EntrySet (id=260) Set keySet= null float loadFactor= 0.75 int modCount= 0 int size= 5 HashMap$Entry[] table= HashMap$Entry[16] (id=116) HashMap$Entry [0]= null HashMap$Entry [1]= HashMap$Entry (id=122) HashMap$Entry [2]= HashMap$Entry (id=124) HashMap$Entry [3]= HashMap$Entry (id=125) int hash= -1368190845 Object key= InvocationKey (id=138) HashMap$Entry next= null Object value= JRMPInvokerProxyHA (id=140) FamilyClusterInfo familyClusterInfo= FamilyClusterInfoImpl (id=193) Object arbitraryObject= null long currentViewId= 1560272158 int cursor= 0 String familyName= "DefaultPartition/jboss.j2ee:jndiName=PublisherSequenceSecurityProxyBean,service=EJB/R" boolean isViewMembersInSyncWithViewId= true ArrayList targets= ArrayList (id=201) Object[] elementData= Object[1] (id=208) Object [0]= JRMPInvoker_Stub (id=213) RemoteRef ref= UnicastRef2 (id=220) LiveRef ref= LiveRef (id=230) Channel ch= TCPChannel (id=233) Endpoint ep= TCPEndpoint (id=236) RMIClientSocketFactory csf= null String host= "x.x.x.87" int port= 1872 RMIServerSocketFactory ssf= null TCPTransport transport= null ObjID id= ObjID (id=239) boolean isLocal= false int modCount= 0 int size= 1 LoadBalancePolicy loadBalancePolicy= RoundRobin (id=196) String proxyFamilyName= "DefaultPartition/jboss.j2ee:jndiName=PublisherSequenceSecurityProxyBean,service=EJB/R" Invoker remoteInvoker= null boolean trace= false HashMap$Entry [4]= null HashMap$Entry [5]= null HashMap$Entry [6]= HashMap$Entry (id=126) HashMap$Entry [7]= null HashMap$Entry [8]= null HashMap$Entry [9]= null HashMap$Entry [10]= null HashMap$Entry [11]= null HashMap$Entry [12]= null HashMap$Entry [13]= null HashMap$Entry [14]= null HashMap$Entry [15]= HashMap$Entry (id=127) int threshold= 12 Collection values= null Interceptor next= StatelessSessionInterceptor (id=92) String seqID= "4b6s1o4b-e4z81o-edak9xvu-1-edakrm22-a" String version= "1.0"
-
4. Re: Single Client. Multiple Initial contexts not working.
xavierpayne2 Sep 7, 2005 12:03 PM (in response to xavierpayne2)We redeployed everything into the default directory (it was in the "All" directory) and connections to multiple (non clustered) JBoss application servers works now. But of course we loose the ability to have JBossAS clusters.
So the answer for us for now seems to be to support multiple connections to different JBoss 4.0.2 application servers as long as none of them belong to a cluster.
:( -
5. Re: Single Client. Multiple Initial contexts not working.
xavierpayne2 Sep 7, 2005 12:21 PM (in response to xavierpayne2)Just for completeness... here is the debug tree from eclipse for the deployment in the default directory which is working...
PublisherSequence this= PublisherSequence (id=28) PublisherSequence IOS= PublisherSequence (id=27) String intendedServerIP= "jnp://x.x.x.155:1099" PublisherSequenceSecurityProxyRemote pubSeq= $Proxy3 (id=40) InvocationHandler h= ClientContainer (id=83) InvocationContext context= InvocationContext (id=87) Map context= HashMap (id=93) Set entrySet= null Set keySet= null float loadFactor= 0.75 int modCount= 0 int size= 5 HashMap$Entry[] table= HashMap$Entry[16] (id=97) HashMap$Entry [0]= HashMap$Entry (id=100) HashMap$Entry [1]= HashMap$Entry (id=103) int hash= -1783084207 Object key= InvocationKey (id=120) HashMap$Entry next= null Object value= JRMPInvokerProxy (id=184) Invoker remoteInvoker= JRMPInvoker_Stub (id=187) RemoteRef ref= UnicastRef2 (id=196) LiveRef ref= LiveRef (id=205) Channel ch= TCPChannel (id=207) Endpoint ep= TCPEndpoint (id=210) RMIClientSocketFactory csf= null String host= "x.x.x.155" int port= 4444 RMIServerSocketFactory ssf= null TCPTransport transport= null ObjID id= ObjID (id=213) boolean isLocal= false HashMap$Entry [2]= null HashMap$Entry [3]= null HashMap$Entry [4]= null HashMap$Entry [5]= null HashMap$Entry [6]= HashMap$Entry (id=104) HashMap$Entry [7]= null HashMap$Entry [8]= null HashMap$Entry [9]= null HashMap$Entry [10]= null HashMap$Entry [11]= null HashMap$Entry [12]= null HashMap$Entry [13]= null HashMap$Entry [14]= null HashMap$Entry [15]= HashMap$Entry (id=105) int threshold= 12 Collection values= null Interceptor next= StatelessSessionInterceptor (id=89) String seqID= "4b6s1o4b-tw3zkv-edbpzjql-1-edbqm7dd-b" String version= "1.0" int seqState= 0
The difference seems to be that somehow the "all" configuration is signalling the client side to act in clustered fashion... That by itself would not be a problem though... The real problem seems to be that the when using the JRMPInvokerProxyHA it does not appear to be able to distinguish between two seperate clusters... so all the ips get lumped together and seen as one cluster in the client side. I don't see any way around this... -
6. Re: Single Client. Multiple Initial contexts not working.
xavierpayne2 Sep 7, 2005 1:47 PM (in response to xavierpayne2)FOUND A SOLUTION!
Each JBossAS was using DefaultPartition. One of the keys in the hashmap must be based on this. Because as an experiment changing the partition name on one of the servers in the all configuration caused them both to worth concurrently without issue!
-Djboss.partition.name=MyWonderfulCluster
So we can have two clusters now and hit them each seperately and still have ha :). I am off to do more testing.