client environment: 213.114.232.173:8001
win2k
wl6.1sp2
<trans-attribute>Required</trans-attribute>
server environment: 10.0.1.2:7001
win2k
wl6.1sp2
ms sql server2000
ms sql server2000 jdbc driver
<trans-attribute>Required</trans-attribute>
The calls from the client are tunnelled over ssh. A call to
localhost:14001 is forwarded to 10.0.1.2:7001
so, a jsp is called on 213.114.232.173:8001, an ejb on the client is
called and looks up an ejb on the server on the url
t3://localhost:14001 which is tunnelled over ssh to 10.0.1.2:7001
When using a Tx Data Source on the server, the client shows the
following stack trace:
<2002-mar-26 15:09:56 CET> <Warning> <JTA> <Resource
weblogic.jdbc.jts.Connection was not assigned to any of these servers:
myserver >
<2002-mar-26 15:09:56 CET> <Warning> <JTA> <Resource
weblogic.jdbc.jts.Connection was not assigned to any of these servers:
myserver >
<2002-mar-26 15:09:56 CET> <Error> <EJB> <Exception during commit of
transaction
Name=[EJB com.daniel.exjobb.session.AuthenticationBean.authenticateByUserName(java.lang.String,java.lang.String)],
Xid=2:50f15f867f28edb9(3813377),
Status=Rolled back. [Reason=javax.transaction.SystemException:
Aborting prepare because some resources could not be assigned],
numRepliesOwedMe=0,
numRepliesOwedOthers=0,
seconds since begin=0,
seconds left=10,
ServerResourceInfo[weblogic.jdbc.jts.Connection]=(state=new,assigned=none),
SCInfo[mydomain+myserver]=(state=rolledback),
properties=({weblogic.transaction.name=[EJB
com.daniel.exjobb.session.AuthenticationBean.authenticateByUserName(java.lang.String,java.lang.String)],
weblogic.jdbc=t3://10.0.1.2:7001}),
OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=myserver+213.114.232.173:8001+mydomain+,
Resources={})],
CoordinatorURL=myserver+213.114.232.173:8001+mydomain+):
javax.transaction.SystemException: Aborting prepare because some
resources could not be assigned
at weblogic.transaction.internal.TransactionImpl.abort(TransactionImpl.java:924)
at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(ServerTransactionImpl.java:1566)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:218)
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:190)
at weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:231)
at com.daniel.exjobb.session.AuthenticationBean_wtobru_EOImpl.authenticateByUserName(AuthenticationBean_wtobru_EOImpl.java:46)
at com.daniel.exjobb.session.AuthenticationBean_wtobru_EOImpl_WLSkel.invoke(Unknown
Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:298)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:267)
at weblogic.rmi.internal.BasicServerRef.dispatch(BasicServerRef.java:166)
at weblogic.rmi.internal.ServerRequest.sendOneWayRaw(ServerRequest.java:92)
at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:112)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:262)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:229)
at weblogic.rmi.internal.ProxyStub.invoke(ProxyStub.java:35)
at $Proxy71.authenticateByUserName(Unknown Source)
at com.daniel.exjobb.utils.UserCredentialsTransport.authenticateUser(UserCredentialsTransport.java:168)
at jsp_servlet._authentication.__login._jspService(__login.java:155)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:304)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2495)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2204)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
If <trans-attribute> is set to RequiresNew at the server it works
fine.
Why isn't the weblogic.jdbc.jts.Connection assigned at the client? Is
it possible (and not too complicated) to assign it manually?