Logging on EJB
Hi, I am developing an EJB layer for JSF+Servlet web layer.
So for web layer I used log4j without problems but I haven't any idea about doing logging on EJB layer, anyone have a suggest ?
Hi,
I quickly tried Google and found many hints and tips (plus book references). So I suggest to try Google in case you don't get an answer here on the forum. Another option is to ask the question on the J2EE forum
OC4J
Frank
Similar Messages
-
Hi, I am developing an EJB layer for JSF+Servlet web layer.
So for web layer I used log4j without problems but I haven't any idea about doing logging on EJB layer, anyone have a suggest ?should work similarly, except you may have to configure your loggers in the appserver log4j config instead of at application level.
-
Logging Denied EJB Method Invocation
In Weblogic Application Server, v 6.1, I'm experimenting around with
the AuditProvider. Several of my EJB's have method-permission
declarations that limit who is able to execute those methods. When
WLS correctly denies an attempt to invoke a method for which its
method-permission does not allow the user permission, the
AuditProvider method (checkPermission) does not seem to get called.
Should checkPermission() be called if a permission check against an
EJB method-permission fails? If not, is there somewhere else I can
capture and audit disallowed attempts to execute these methods?
Thanks.
-- EdgarThanks, Tom.
We are on SP3. I'll double-check my findings, put together a test
case I can send with it, and open a support case.
Thanks again.
-- Edgar
"Tom Hegadorn" <[email protected]> wrote in message news:<[email protected]>...
Hi,
I'm not sure but it sounds like it may be a bug. Please make
sure you are on the latest service pack (SP3 at time of this
writing). If so, and you still see the behavior I would recommend
opening a case with BEA Support. Please provide a detailed
test case so that a support engineer can replicate the behavior.
Thanks.
Regards,
Tom Hegadorn
Developer Relations Engineer
BEA Support
[email protected] (Edgar) wrote:
In Weblogic Application Server, v 6.1, I'm experimenting around with
the AuditProvider. Several of my EJB's have method-permission
declarations that limit who is able to execute those methods. When
WLS correctly denies an attempt to invoke a method for which its
method-permission does not allow the user permission, the
AuditProvider method (checkPermission) does not seem to get called.
Should checkPermission() be called if a permission check against an
EJB method-permission fails? If not, is there somewhere else I can
capture and audit disallowed attempts to execute these methods?
Thanks.
-- Edgar -
Logging ejb container operations
Hello guys,
I'm new to WebLogic, so excuse me for such, probably, a faq-question.
Is there a way to enable logging of EJB container operations? I.e. to make the
container to log what beans, what cmp and cmr fields it loads.
TIA,
alex"alex" <[email protected]> wrote
I'm new to WebLogic, so excuse me for such, probably, a faq-question.No problem...
Is there a way to enable logging of EJB container operations? I.e. to make the
container to log what beans, what cmp and cmr fields it loads.Well, first start here:
http://edocs.bea.com/wls/docs70/logging/
NOTE: This documentation applies to version 7.0 of WebLogic Server.
Next, I'd make sure my WebLogic Server was sending (to STDOUT)
low-level DEBUG messages -- that appears to be the sort of information
you are looking to obtain from your EJB operations. One of the things
I did on a project a while back was create an object that contained a
boolean value (within my app.). Then, to enable/disable this
debugging, we'd appropriately toggle this value. Do you understand
what I mean?
Hope this helps...
Brian J. Mitchell
BEA Systems Administrator
TRX
Atlanta, GA
email: [email protected]
office: 404-327-7238
mobile: 678-283-6530 -
Hi,
h1. Platform Weblogic 9.2.3 + commons logging 1.1.1
Am using Commons logging from my EJB components, and successfully deployed the application, I see the application log files are created in the logs folder. But all the logs from my EJB are not drained in to the log file, but the logs from other components that are deployed as part of the same EAR are being logged. But I dont see any EJB logs :(
I am using the log4j.properties to configure my logging along with commons logging API.
Can anyone let me know what could be wrong or any configuration needs to be done to enable logging from EJB get drained to log file .
Thanks.
KameshI am using Weblogic 10.3, In which I tried to deploy my web application which uses log4j for logging. While deploying I got an error org/apache/log4j/propertyconfigurator "Class Not found Exception".
I have used the above class in a servlet at a startup. So my application is not getting started.
I placed the log4j.jar file and common-logging.jar file in <app>/WEb-Inf/lib folder. -
Client EJB JNDI lookup broken in OC4J 9.0.2?
I have a client program that connects to an EJB in the application server and invokes methods on it. If it look up the EJB using the actual JNDI binding, it works fine. If I look it up in java:comp/env (and use the ejb-ref in application-client.xml and ejb-ref-mapping in orion-application-client.xml) the client program catches the following exception:
caught : javax.naming.NameNotFoundException: No object bound for java:comp/env/ejb/logging/Logger
javax.naming.NameNotFoundException: No object bound for java:comp/env/ejb/logging/Logger
at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:116)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at com.mycompany.common.logging.ejb.test.LoggerEJBTest.main(LoggerEJBTest.java:37)
Now, assuming I don't have any typos (and I'd be thrilled if someone pointed it out if that were the case), then it looks like this is a bug in OC4J 9.0.2: the ejb-ref and ejb-ref-mapping elements do not work. For the record, I am using the same ejb-ref and ejb-ref-mapping elements for a servlet's web.xml and orion-web.xml, respectively, without problems.
Here are relevant file excerpts:
LoggerEJBTest.java:
String hostName = "localhost";
String hostPort = "23791";
String userName = "abc";
String password = "def";
String providerURL = "ormi://" + hostName + ":" + hostPort + "/ghi";
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.ApplicationClientInitialContextFactory");
env.put(Context.PROVIDER_URL, providerURL);
env.put(Context.SECURITY_PRINCIPAL, userName);
env.put(Context.SECURITY_CREDENTIALS, password);
System.out.println("create initial context");
Context context = new InitialContext(env);
System.out.println("get home object");
//works when uncommented
//Object homeObject = context.lookup("logging/Logger");
//broken:
Object homeObject = context.lookup("java:comp/env/ejb/logging/Logger");
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>
<description>abc</description>
<display-name>abc</display-name>
<enterprise-beans>
<session>
<description>Logger Bean</description>
<display-name>Logger</display-name>
<ejb-name>Logger</ejb-name>
<home>com.mycompany.common.logging.ejb.LoggerHome</home>
<remote>com.mycompany.common.logging.ejb.Logger</remote>
<ejb-class>com.mycompany.common.logging.ejb.LoggerBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
orion-ejb-jar.xml:
<?xml version="1.0"?>
<!DOCTYPE orion-ejb-jar PUBLIC "-//Evermind//DTD Enterprise JavaBeans 2.0 runtime//EN" "http://xmlns.oracle.com/ias/dtds/orion-ejb-jar.dtd">
<orion-ejb-jar>
<enterprise-beans>
<session-deployment name="Logger" location="logging/Logger">
</enterprise-beans>
</orion-ejb-jar>
application-client.xml:
<?xml version="1.0"?>
<!DOCTYPE application-client PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application Client 1.3//EN" "http://java.sun.com/dtd/application-client_1_3.dtd">
<application-client>
<display-name>logging test</display-name>
<ejb-ref>
<ejb-ref-name>ejb/logging/Logger</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.mycompany.common.logging.ejb.LoggerHome</home>
<remote>com.mycompany.common.logging.ejb.Logger</remote>
<ejb-link>Logger</ejb-link>
</ejb-ref>
</application-client>
orion-application-client.xml:
<?xml version="1.0"?>
<!DOCTYPE orion-application-client PUBLIC "-//Evermind//DTD J2EE Application-client runtime 1.2//EN" "http://xmlns.oracle.com/ias/dtds/orion-application-client.dtd">
<orion-application-client>
<ejb-ref-mapping location="logging/Logger" name="ejb/logging/Logger" />
</orion-application-client>As far as I know, the only way to lookup an EJB (deployed to
OC4J) from a regular java class using the "ApplicationClientInitialContextFactory"
class and the logical JNDI name is to include your regular java
class (i.e. the client) in your application's EAR file (the file
you use to deploy your application to OC4J).OK, but that sounds like a pretty silly constraint. Shouldn't the ApplicationClientInitialContextFactory know how to do the mapping using the application-client.xml and orion-application-client.xml settings? What does the OC4J server provide that makes this magically work?
From the information you have supplied, it appears that you may
not want to include your client (java) class in your EAR file.That is correct. It is an integration test program, not meant to be deployed into the application server.
So now the question is, "Do you want to make your client part
of your J2EE application, and include it in the application
EAR file?"
If you do, then you have made several mistakes which prevent
you from doing that, but I don't want to explain further, since
you may not want to do that, anyway!Not applicable. But on that topic, aside from being able to auto-start a client application within the OC4J JVM, are there any other reasons why I might want to deploy a client in that manner? I mean, honestly, these things are called "clients" and "servers" for a reason.
Now if you have been reading other postings to this forum,
and if you have read the documentation for OC4J, you would
know that it requires J2SDK 1.3.1 only (not 1.4.0).I am well aware of the other postings on that topic. I am, however, counting on Oracle to live up to their promise to certify 1.4 with with the next update to OC4J:
Limits of 10g
That aside, I already consider OC4J 9.0.2 to be a broken product at this point anyway, so hacking it to use Java 1.4 doesn't bother me that much. OC4J 9.0.2 works about as well with Java 1.4 as with Java 1.3, assuming one replaces the tools.jar. The other major incompatibility is that Oracle SOAP breaks if a web service EJB home&remote interface is compiled with Java 1.4:
http://forums.oracle.com/forums/message.jsp?id=936894
Alas, we're using Apache SOAP 2.3 rather than the ass-backwards stuff in OC4J, anyways, so there's no problem. -
Error when trying to start EJB Server
Hi,
I am new to EJB's and am following the tutorial on ejbtut.com. I followed the tutorial and created the EmployeesEJB.jar file and placed the appropriate code in the ejb.ini file to deploy it. But when i start the EJB server i get the following. Can anyone please help me tackle this problem.
Heres what happens when i start the server:::::::::::
file: C:\Blazix\Ejblog.log
Blazix EJB Server 1.2
Copyright (C) Desiderata Software, 2001-2002
All rights reserved
Configuration file: C:\Blazix\ejb.ini
JRMP version
Deploying EJB-Home class "employees.EmployeesHome" at JNDI name "Employees"
Evaluation license
java.rmi.ServerException: Server RemoteException; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: desisoft.ejb.server.EjbServerJRMP_Stub
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: desisoft.ejb.server.EjbServerJRMP_Stub
java.lang.ClassNotFoundException: desisoft.ejb.server.EjbServerJRMP_Stub
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Unknown Source)
at desisoft.ejb.server.EjbServerJRMP.serverMain(EjbServerJRMP.java:329)
at desisoft.ejb.server.EjbServer.main(EjbServer.java:803)
Looking at the error it seems as if its looking for the EJBServer's stub file. The tutorial didn't mention abt creating any kind of stub file, so can someone please tell me what am missing here.
Thanks in advanceGenerate the stubs and skeletons for your EJB.This you can do by generating deployment code in most of the IDEs.
Hope this helps you. -
JMS Queue problems causing EJB to rollback....
We recently purchased WLS 6.1 and we have been using the product for the last few
months. I am having a problem which I have detailed below. I have provided as much
information as possible. If you need additional information, please let me know.
Server A Config:
Pentium III, 1000Mhz
Windows 2000, SP2
WLS WebLogic Server 6.1 SP2 12/18/2001 11:13:46 #154529
Server B Config:
SunBlade 100
Solaris 5.8
WebLogic Server 6.1 SP2 12/18/2001 11:13:46 #154529
Server A contains a session EJB called GoalManager. This EJB has a method named cancel().
The transactional attribute for all methods supported by this bean is REQUIRED. GoalManager
uses a transactional data source deployed on Server A named "goal". There is nothing
special about this data source aside from the fact that I have enabled two phase
commit for it because a previous error was indicating that this was a required setting
for the pool. A JMS server exists on Server B. A queue named "emailQueue" is set
up as a destination on this JMS server. I also have a MDB on Server B that listens
for messages on this queue. When a message is received, the MDB's onMessage() method
extracts some properties from the message and sends an email to the specified recipient
in the message. I have confirmed that this queue and MDB are working properly because
I ran a small test program from the command prompt which creates a message and sends
it to the queue on Server B. The MDB gets the message and sends the email to the
correct recipient, so I am sure there are no misconfigurations on the server.
The problem is as follows: The cancel() method in the GoalManager EJB on Server A
performs some database work. If no exceptions are raised, the last task in the method
attempts to access the queue on Server B and send a message to the queue. Here is
the code that I am using to access the queue:
QueueConnectionFactory queueFactory = (QueueConnectionFactory)context.lookup( "javax.jms.QueueConnectionFactory");
QueueConnection queueConnection = queueFactory.createQueueConnection();
Queue queue = (Queue)context.lookup( "emailQueue");
QueueSession queueSession = queueConnection.createQueueSession( false, Session.AUTO_ACKNOWLEDGE);
QueueSender queueSender = queueSession.createSender( queue);
The cancel() method executes without error, but when the EJB container on Server
A attempts to commit the transaction at the end of the cancel() method, I am receiving
the following error on Server A's log:
<Error> <EJB> <Exception during commit of transaction Name=[EJB com.frx.emp.go.ejb.session.goal.GoalManagerBean.cancelGoal(com.frx.emp.entity.Employee,com.frx.emp.go.entity.Goal)],
Xid=0:7c2dda32cf39a36e(6911242),
Status=Rolled back. [Reason=javax.transaction.xa.XAException],
numRepliesOwedMe=0,
numRepliesOwedOthers=0,
seconds since begin=2,
seconds left=10,
ServerResourceInfo[weblogic.jdbc.jts.Connection]=(state=rolledback,assigned=server1),
ServerResourceInfo[JMS_EMailServer_NotDurable]=(state=rolledback,assigned=server1),
SCInfo[FRX+server1]=(state=rolledback),
SCInfo[frxnet+wlsvr1]=(state=rolledback),
properties=({weblogic.transaction.name=[EJB com.frx.emp.go.ejb.session.goal.GoalManagerBean.cancelGoal(com.frx.emp.entity.Employee,com.frx.emp.go.entity.Goal)],
weblogic.jdbc=t3://172.16.200.9:9005}),
OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=server1+172.16.200.9:9005+FRX+,
Resources={})],
CoordinatorURL=server1+172.16.200.9:9005+FRX+): javax.transaction.xa.XAException
at weblogic.jms.backend.BEXAResource.prepare(BEXAResource.java:853)
at weblogic.transaction.internal.ServerResourceInfo.prepare(ServerResourceInfo.java:1124)
at weblogic.transaction.internal.ServerResourceInfo.prepare(ServerResourceInfo.java:370)
at weblogic.transaction.internal.ServerSCInfo.startPrepare(ServerSCInfo.java:186)
at weblogic.transaction.internal.ServerTransactionImpl.localPrepare(ServerTransactionImpl.java:1822)
at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(ServerTransactionImpl.java:1607)
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.frx.emp.go.ejb.session.goal.GoalManagerBean_e3dvd2_EOImpl.cancelGoal(GoalManagerBean_e3dvd2_EOImpl.java:459)
at com.frx.emp.go.web.handler.UpdateGoalHandler.handleRequest(UpdateGoalHandler.java:55)
at com.frx.emp.web.mvc.HandlerMappedController.service(HandlerMappedController.java:115)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
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)
--------------- nested within: ------------------
weblogic.transaction.RollbackException: Could not prepare resource 'JMS_EMailServer_NotDurable
- with nested exception:
[javax.transaction.xa.XAException]
at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1475)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:263)
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:190)
at weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:231)
at com.frx.emp.go.ejb.session.goal.GoalManagerBean_e3dvd2_EOImpl.cancelGoal(GoalManagerBean_e3dvd2_EOImpl.java:459)
at com.frx.emp.go.web.handler.UpdateGoalHandler.handleRequest(UpdateGoalHandler.java:55)
at com.frx.emp.web.mvc.HandlerMappedController.service(HandlerMappedController.java:115)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
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)
Just a quick note, I tried to change the following line to specify a "transacted"
JMS session by passing "true" to the statement below. When I tested this, the cancel()
method raised no exceptions, but the MDB on Server B is never invoked and the email
is never sent. Strange.
QueueSession queueSession = queueConnection.createQueueSession( true, Session.AUTO_ACKNOWLEDGE);
If you need more info, let me know. I thank you for your help.
Correct. According to the trace you have it set at 10 seconds, while the default is 30 seconds.
Tom
SAF wrote:
> Thanks for the reply.
>
> Increase the trx time? You mean JTA, right?
>
> I already opened a case with BEA, so I'm waiting to get a response from them.
>
> Thanks again,
>
> Raffi
>
> Tom Barnes <[email protected]> wrote:
> >Hi,
> >
> >I looked at the BEXAResource.java source code which the stack trace points
> >at. It seems that from the
> >JMS server's resource manager's point of view, it never heard of the transaction
> >before, indicating
> >that the transaction may have already rolled back. I think this could
> >happen if the transaction
> >times out before commit() is called, but I'm not sure what is wrong in your
> >case -- as according
> >to the trace you provided, your tx is 2 seconds old and your tx-timout is
> >10 seconds.
> >
> >In any case, it looks like the culprit may be in the transaction code and
> >not the JMS code...
> >
> >I suggest:
> > A) increasing your tx timeout (what the heck give it a try)
> > B) could it somehow be a clock synchronization problem? are multiple
> >servers involved?
> > C) posting to the transaction newsgroup
> > D) contacting customer support
> >
> >Tom
> >
> >SAF wrote:
> >
> >> We recently purchased WLS 6.1 and we have been using the product for the
> >last few
> >> months. I am having a problem which I have detailed below. I have provided
> >as much
> >> information as possible. If you need additional information, please let
> >me know.
> >>
> >> Server A Config:
> >> Pentium III, 1000Mhz
> >> Windows 2000, SP2
> >> WLS WebLogic Server 6.1 SP2 12/18/2001 11:13:46 #154529
> >>
> >> Server B Config:
> >> SunBlade 100
> >> Solaris 5.8
> >> WebLogic Server 6.1 SP2 12/18/2001 11:13:46 #154529
> >>
> >> Server A contains a session EJB called GoalManager. This EJB has a method
> >named cancel().
> >> The transactional attribute for all methods supported by this bean is
> >REQUIRED. GoalManager
> >> uses a transactional data source deployed on Server A named "goal". There
> >is nothing
> >> special about this data source aside from the fact that I have enabled
> >two phase
> >> commit for it because a previous error was indicating that this was a
> >required setting
> >> for the pool. A JMS server exists on Server B. A queue named "emailQueue"
> >is set
> >> up as a destination on this JMS server. I also have a MDB on Server B
> >that listens
> >> for messages on this queue. When a message is received, the MDB's onMessage()
> >method
> >> extracts some properties from the message and sends an email to the specified
> >recipient
> >> in the message. I have confirmed that this queue and MDB are working properly
> >because
> >> I ran a small test program from the command prompt which creates a message
> >and sends
> >> it to the queue on Server B. The MDB gets the message and sends the email
> >to the
> >> correct recipient, so I am sure there are no misconfigurations on the
> >server.
> >>
> >> The problem is as follows: The cancel() method in the GoalManager EJB
> >on Server A
> >> performs some database work. If no exceptions are raised, the last task
> >in the method
> >> attempts to access the queue on Server B and send a message to the queue.
> >Here is
> >> the code that I am using to access the queue:
> >>
> >> QueueConnectionFactory queueFactory = (QueueConnectionFactory)context.lookup(
> >"javax.jms.QueueConnectionFactory");
> >> QueueConnection queueConnection = queueFactory.createQueueConnection();
> >> Queue queue = (Queue)context.lookup( "emailQueue");
> >> QueueSession queueSession = queueConnection.createQueueSession( false,
> >Session.AUTO_ACKNOWLEDGE);
> >> QueueSender queueSender = queueSession.createSender( queue);
> >>
> >> The cancel() method executes without error, but when the EJB container
> >on Server
> >> A attempts to commit the transaction at the end of the cancel() method,
> >I am receiving
> >> the following error on Server A's log:
> >>
> >> <Error> <EJB> <Exception during commit of transaction Name=[EJB com.frx.emp.go.ejb.session.goal.GoalManagerBean.cancelGoal(com.frx.emp.entity.Employee,com.frx.emp.go.entity.Goal)],
> >> Xid=0:7c2dda32cf39a36e(6911242),
> >> Status=Rolled back. [Reason=javax.transaction.xa.XAException],
> >> numRepliesOwedMe=0,
> >> numRepliesOwedOthers=0,
> >> seconds since begin=2,
> >> seconds left=10,
> >> ServerResourceInfo[weblogic.jdbc.jts.Connection]=(state=rolledback,assigned=server1),
> >> ServerResourceInfo[JMS_EMailServer_NotDurable]=(state=rolledback,assigned=server1),
> >> SCInfo[FRX+server1]=(state=rolledback),
> >> SCInfo[frxnet+wlsvr1]=(state=rolledback),
> >> properties=({weblogic.transaction.name=[EJB com.frx.emp.go.ejb.session.goal.GoalManagerBean.cancelGoal(com.frx.emp.entity.Employee,com.frx.emp.go.entity.Goal)],
> >>
> >> weblogic.jdbc=t3://172.16.200.9:9005}),
> >> OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=server1+172.16.200.9:9005+FRX+,
> >> Resources={})],
> >> CoordinatorURL=server1+172.16.200.9:9005+FRX+): javax.transaction.xa.XAException
> >> at weblogic.jms.backend.BEXAResource.prepare(BEXAResource.java:853)
> >> at weblogic.transaction.internal.ServerResourceInfo.prepare(ServerResourceInfo.java:1124)
> >> at weblogic.transaction.internal.ServerResourceInfo.prepare(ServerResourceInfo.java:370)
> >> at weblogic.transaction.internal.ServerSCInfo.startPrepare(ServerSCInfo.java:186)
> >> at weblogic.transaction.internal.ServerTransactionImpl.localPrepare(ServerTransactionImpl.java:1822)
> >> at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(ServerTransactionImpl.java:1607)
> >> 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.frx.emp.go.ejb.session.goal.GoalManagerBean_e3dvd2_EOImpl.cancelGoal(GoalManagerBean_e3dvd2_EOImpl.java:459)
> >> at com.frx.emp.go.web.handler.UpdateGoalHandler.handleRequest(UpdateGoalHandler.java:55)
> >> at com.frx.emp.web.mvc.HandlerMappedController.service(HandlerMappedController.java:115)
> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> >> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
> >> 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)
> >> --------------- nested within: ------------------
> >> weblogic.transaction.RollbackException: Could not prepare resource 'JMS_EMailServer_NotDurable
> >> - with nested exception:
> >> [javax.transaction.xa.XAException]
> >> at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1475)
> >> at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:263)
> >> at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:190)
> >> at weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:231)
> >> at com.frx.emp.go.ejb.session.goal.GoalManagerBean_e3dvd2_EOImpl.cancelGoal(GoalManagerBean_e3dvd2_EOImpl.java:459)
> >> at com.frx.emp.go.web.handler.UpdateGoalHandler.handleRequest(UpdateGoalHandler.java:55)
> >> at com.frx.emp.web.mvc.HandlerMappedController.service(HandlerMappedController.java:115)
> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> >> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
> >> 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)
> >>
> >> Just a quick note, I tried to change the following line to specify a "transacted"
> >> JMS session by passing "true" to the statement below. When I tested this,
> >the cancel()
> >> method raised no exceptions, but the MDB on Server B is never invoked
> >and the email
> >> is never sent. Strange.
> >>
> >> QueueSession queueSession = queueConnection.createQueueSession( true,
> >Session.AUTO_ACKNOWLEDGE);
> >>
> >> If you need more info, let me know. I thank you for your help.
> >
-
Hi,
we have set the following in bc4j.xcfg for our AppicationModule which is deployed as EJB with BMT:
<jbo.ejb.txntimeout>0</jbo.ejb.txntimeout>
With jbo.debugoutput=console we get the following lines
including "Transaction timeout set to 0 secs"
[298] Diagnostic Properties: Timing:false Functions:false Linecount:true Threshold:6
[299] Loading from /de/materna/heimabrechnung/common/logging/logging.xml file
[300] Loading from indvidual XML files
[301] Loading the Containees for the Package 'de.materna.heimabrechnung.common.logging.logging'.
[302] Loading from /de/materna/heimabrechnung/common/logging/LoggingModule.xml file
[303] Loading from /de/materna/heimabrechnung/common/logging/LogEintragView.xml file
[304] Loading from /de/materna/heimabrechnung/common/logging/LogEintrag.xml file
[305] Loading from /de/materna/heimabrechnung/common/logging/LogStacktraceView.xml file
[306] Loading from /de/materna/heimabrechnung/common/logging/LogStacktrace.xml file
[307] mUsePersColl is false
[308] ViewObjectImpl.mDefaultMaxRowsPerNode is 70
[309] ViewObjectImpl.mDefaultMaxActiveNodes is 30
[310] Transaction timeout set to 0 secs
[311] Created root application module: 'de.materna.heimabrechnung.common.logging.LoggingModule'
[312] Locale is: 'en'
[313] Transaction timeout set to 0 secs
[314] Trying connection: DataSource='com.evermind.sql.OrionCMTDataSource/heimabrechnung/jdbc/HeimabrechnungDS'...
[315] Successfully logged in
But after a while not using the ApplicationModule on the client the server throws the following exception:
java.lang.NullPointerException
at oracle.jbo.server.remote.ejb.EJBApplicationModuleImpl.resumeTransaction(EJBApplicationModuleImpl.java:635)
at de.materna.heimabrechnung.common.logging.server.ejb.beanmanaged.LoggingModuleServer.logDebug(LoggingModuleServer.java:6
0)
at RemoteLoggingModule_StatefulSessionBeanWrapper20.logDebug(RemoteLoggingModule_StatefulSessionBeanWrapper20.java:1383)
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:802)
at java.lang.Thread.run(Thread.java:484)
Any ideas ?
What we need are EJB's without any timeout!The following configuration seems working:
version: OC4J (9.0.3.0.0) (build 020927.1699)
AM deployment:
- bc4j.xcfg: <jbo.ejb.txntimeout>30000</jbo.ejb.txntimeout>
- orion-ejb-jar.xml: <session-deployment name="..." timeout="0"/>
OC4J config:
- data-source: inactivity-timeout="30000"
This keeps connection open for more than default 30 mins of inactivity (30000 secs configured).
Although, oc4j console prints multiple warnings:
DriverManagerConnectionPoolConnection not closed, check your code!
Looks like this is not an intended usage - but working.
Notice that it was a test, not a production environment.
Also pls see 9033: AM as EJB Session bean: pooled connection lost for new txn
I would be thankful for any experience in running AM Session EJB w/o timeout. -
Calling a WebService from Java Applet
Hi all,
In my application I have 3 projects:
1. server - for all the business logic.
2. view - for web app.
3. swing - for applet.
In the view project I wrote a WS, and I want to call it from my applet. So I created a WS using the Jdev (10.1.3.2) wizard in the view project (I tested it and it worked fine), and in the swing project I created a proxy for this WS, tested it and it worked fine. Then I created a JAR containing the swing project with the WS proxy classes, opened the Applet and find out that I have some classes missing, so I started adding all the relevant Jars and ended with a ~13MB JAR containing all the swing project jars that in the class path for a simple Applet.
I know that I'm missing something but I dont know what. Do I really need all those Jars. Is there a simple way to call to a WS via Applet?
This is the list of all the Jars:
activation.jar
commons-logging-api.jar
commons-logging.jar
ejb.jar
http_client.jar
jaxb-api.jar
jaxb-impl.jar
jaxen.jar
jaxr-api.jar
jaxrpc-api.jar
jazncore.jar
jdom.jar
jms.jar
jta.jar
mail.jar
mdds.jar
oc4jclient.jar
ojdl2.jar
ojmisc.jar
ojpse.jar
oraclepki.jar
orajaxr.jar
orasaaj.jar
orawsdl.jar
orawsrm.jar
osdt_cert.jar
osdt_core.jar
osdt_saml.jar
osdt_wss.jar
osdt_xmlsec.jar
relaxngDatatype.jar
saaj-api.jar
saaj-impl.jar_old
servlet.jar
wsclient.jar
wsdl.jar
wssecurity.jar
wsserver.jar
xdb.jar
xml.jar
xmlparserv2.jar
xsdlib.jar
By the way at the end of all this annoying process I got the next exception:
[failed to localize] typemapping.nested.exception.initialization(javax.xml.rpc.JAXRPCException: javax.xml.soap.SOAPException: Unable to create SOAP Factory: Provider com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl not found)
at oracle.j2ee.ws.client.BasicService.createLiteralMappings(BasicService.java:282)
at oracle.j2ee.ws.client.BasicService.createStandardTypeMappingRegistry(BasicService.java:244)
at com.tm.view.ws.misc.runtime.WSMisc_Service_SerializerRegistry.getRegistry(WSMisc_Service_SerializerRegistry.java:26)
at com.tm.view.ws.misc.runtime.WSMisc_Service_Impl.<init>(WSMisc_Service_Impl.java:26)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at oracle.j2ee.ws.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:92)
at oracle.j2ee.ws.client.ServiceFactoryImpl.loadService(ServiceFactoryImpl.java:121)
at com.tm.view.ws.misc.WSMiscSoap12HttpPortClient.<init>(WSMiscSoap12HttpPortClient.java:20)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at client.base.connectivity.ClientRequestAgent.runWS(ClientRequestAgent.java:135)
at client.base.connectivity.ClientRequestAgent.run(ClientRequestAgent.java:44)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
ShacharTry this:
1. open the webService data controll in the Data Controls section and drag the method from the webService onto the method call activity in your task flow. This will overwrite the current method property (the one which pints to your bean, make a copy of this entry if you can't reproduce it by hand). This too will create an entry in the pageDef of the method call activity.
2. reenter (or paste) the original value in the method property, so that it again points to your bean. The entry in the pageDef will remain!
3. now in the bean method you can access the method via its binding like you access any other method from the binding:
// GET A METHOD FROM PAGEDEF AND EXECUTE IT
// get the binding container
BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
// get an Action or MethodAction
OperationBinding method = bindings.getOperationBinding("YourMethodActionNAME");
if (method == null)
// handle method not found error...
// if there are parameters to set...
Map paramsMap = method.getParamsMap();
paramsMap.put("param","value") ;
// execute the method
method.execute();
List errors = method.getErrors();
if (!errors.isEmpty())
// handle errors here errors is a list of exceptions!
// no error resume normal workTimo -
Hi All,
I got a big head ache of this problem for several days, much appreciated if
I can get help from you.
The problem is, I wrote an EJB and already deployed it into Weblogic5.1. I
also wrote a java EJB client to access this EJB. Everything seemed ok at
this moment.
The problem occured after i convert this EJB client to ActiveX and test it
with Microsoft ActiveX Control Test Container. I log each step in the
ActiveX, and find the problem is caused by
javax.rmi.PortableRemoteObject.narrow(). Below is my source code and log
information. My environment is Server side(weblogic5.1),Client side(java
run-time3.1 with plug-in).
Source code:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFacto
ry");
env.put(Context.PROVIDER_URL,"t3://"+ip+":"+port);
try{
Log("Init jndi ");
InitialContext ctx = new InitialContext(env);
Log("Search Home ");
Object obj = ctx.lookup("ServiceManagerHome");
Log("home is "+obj);
Log("narrow from "+obj.getClass().getName());
Log("narrow to "+ServiceManagerHome.class.getName());
obj = PortableRemoteObject.narrow(obj,ServiceManagerHome.class);
Log("narrow home is "+obj);
serviceHome = (ServiceManagerHome)obj;
Log("cast home"+serviceHome);
serviceManager = serviceHome.create();
Log("Create EJB bean "+serviceManager);
} catch (Exception e){
Log("Err-"+e);
Log("Err-"+e.getLocalizedMessage());
Log("Err-"+e.getMessage());
Log information for ActiveX:
Init jndi
Search Home
home is ServiceManagerHome [
-4611900794319518045S155.161.96.26:[7001,7001,7002,7002,7001,-1]/259]
narrow from rm.service.ejbimpl.ServiceManagerBeanHomeImpl_ServiceStub
narrow to crm.service.ejbimpl.ServiceManagerHome
Err-java.lang.ClassCastException
Err-null
Err-null
Log information for java EJB Client:
Init jndi
Search Home
home is
crm.service.ejbimpl.ServiceManagerBeanHomeImpl_ServiceStub@-4611900794319518
045S155.161.96.26:[7001,7001,7002,7002,7001,-1] ServiceManagerHome [
-4611900794319518045S155.161.96.26:[7001,7001,7002,7002,7001,-1]/259
narrow from crm.service.ejbimpl.ServiceManagerBeanHomeImpl_ServiceStub
narrow to crm.service.ejbimpl.ServiceManagerHome
narrow home
crm.service.ejbimpl.ServiceManagerBeanHomeImpl_ServiceStub@-4611900794319518
045S155.161.96.26:[7001,7001,7002,7002,7001,-1] ServiceManagerHome [
-4611900794319518045S155.161.96.26:[7001,7001,7002,7002,7001,-1]/259]
cast
homecrm.service.ejbimpl.ServiceManagerBeanHomeImpl_ServiceStub@-461190079431
9518045S155.161.96.26:[7001,7001,7002,7002,7001,-1] ServiceManagerHome [
-4611900794319518045S155.161.96.26:[7001,7001,7002,7002,7001,-1]/259
Create serviceManager
crm.service.ejbimpl.ServiceManagerBeanEOImpl_ServiceStub@-461190079431951804
5S155.161.96.26:[7001,7001,7002,7002,7001,-1] ServiceManagerHome_EO [
-4611900794319518045S155.161.96.26:[7001,7001,7002,7002,7001,-1]/258Contact support.
Yuan Ming Lei wrote:
Hi All,
I got a big head ache of this problem for several days, much appreciated if
I can get help from you.
The problem is, I wrote an EJB and already deployed it into Weblogic5.1. I
also wrote a java EJB client to access this EJB. Everything seemed ok at
this moment.
The problem occured after i convert this EJB client to ActiveX and test it
with Microsoft ActiveX Control Test Container. I log each step in the
ActiveX, and find the problem is caused by
javax.rmi.PortableRemoteObject.narrow(). Below is my source code and log
information. My environment is Server side(weblogic5.1),Client side(java
run-time3.1 with plug-in).
Source code:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFacto
ry");
env.put(Context.PROVIDER_URL,"t3://"+ip+":"+port);
try{
Log("Init jndi ");
InitialContext ctx = new InitialContext(env);
Log("Search Home ");
Object obj = ctx.lookup("ServiceManagerHome");
Log("home is "+obj);
Log("narrow from "+obj.getClass().getName());
Log("narrow to "+ServiceManagerHome.class.getName());
obj = PortableRemoteObject.narrow(obj,ServiceManagerHome.class);
Log("narrow home is "+obj);
serviceHome = (ServiceManagerHome)obj;
Log("cast home"+serviceHome);
serviceManager = serviceHome.create();
Log("Create EJB bean "+serviceManager);
} catch (Exception e){
Log("Err-"+e);
Log("Err-"+e.getLocalizedMessage());
Log("Err-"+e.getMessage());
Log information for ActiveX:
Init jndi
Search Home
home is ServiceManagerHome [
-4611900794319518045S155.161.96.26:[7001,7001,7002,7002,7001,-1]/259]
narrow from rm.service.ejbimpl.ServiceManagerBeanHomeImpl_ServiceStub
narrow to crm.service.ejbimpl.ServiceManagerHome
Err-java.lang.ClassCastException
Err-null
Err-null
Log information for java EJB Client:
Init jndi
Search Home
home is
crm.service.ejbimpl.ServiceManagerBeanHomeImpl_ServiceStub@-4611900794319518
045S155.161.96.26:[7001,7001,7002,7002,7001,-1] ServiceManagerHome [
-4611900794319518045S155.161.96.26:[7001,7001,7002,7002,7001,-1]/259
narrow from crm.service.ejbimpl.ServiceManagerBeanHomeImpl_ServiceStub
narrow to crm.service.ejbimpl.ServiceManagerHome
narrow home
crm.service.ejbimpl.ServiceManagerBeanHomeImpl_ServiceStub@-4611900794319518
045S155.161.96.26:[7001,7001,7002,7002,7001,-1] ServiceManagerHome [
-4611900794319518045S155.161.96.26:[7001,7001,7002,7002,7001,-1]/259]
cast
homecrm.service.ejbimpl.ServiceManagerBeanHomeImpl_ServiceStub@-461190079431
9518045S155.161.96.26:[7001,7001,7002,7002,7001,-1] ServiceManagerHome [
-4611900794319518045S155.161.96.26:[7001,7001,7002,7002,7001,-1]/259
Create serviceManager
crm.service.ejbimpl.ServiceManagerBeanEOImpl_ServiceStub@-461190079431951804
5S155.161.96.26:[7001,7001,7002,7002,7001,-1] ServiceManagerHome_EO [
-4611900794319518045S155.161.96.26:[7001,7001,7002,7002,7001,-1]/258 -
Hi,
I have problem with containerManaged bean. After succesfully created
connection pool I receive messages that container cannot map EJB attributes
to table columns.
Here are some parts of the log:
weblogic.ejb.common.DeploymentException: Could not setup the persistence
store for this bean.; nested exception is:
weblogic.cmp.rdbms.CMPStartupException: WebLogic RDBMS CMP could not be
started due to the following exceptions:
0 : Error in Weblogic CMP RDBMS deployment descriptor. Column 'bal',
referenced in attribute-map element, was not found in database table.
1 : Error in Weblogic CMP RDBMS deployment descriptor. Column 'id',
referenced in attribute-map element, was not found in database table.
2 : Error in Weblogic CMP RDBMS deployment descriptor. Column 'type
', referenced in attribute-map element, was not found in database table.
connection pool is connected to Oracle database via
weblogic.jdbc.oci.Driver.
Could anyone help me with that?
Micha³ Wilkowski
WolaNet SA
[email protected]Thanks!
I solved the problem by following your advice.
I got to know the existence of config/server.xml.
I also got to know why so slow for the first time.
The connections in the connection pool is not made at the server starting time. It is made at the first use time. (first invoke).
In my PC, for between oracle and appserver, the connection making time takes about 33 seconds(?? - really high cost!). the default initial pool size was 8. So was 8*33 = 264 sec = 4.4 min.
Thanks. -
I am currently working on a project using jsp (apche struts) and EJB's implemented on Websphere v4.0. What we want to do is authenticate a user against our back end databases and then depending on the result restrict access to the other EJB's in our system. What we don't want to do is use form based authentication with user/password as we require several pieces of info from the customer to authenticate them.
What we have done so far is:
define roles and mapped these to EJB's. For simplicity all ejb's are mapped to one role but the log on ejb is mapped to a different role.
These roles are then mapped to users at deploy time. This should mean that all users can call the logon ejb but only authenticated users can call the others.
The problem is that I cannot invoke the restricted EJB's. All users can invoke the logon EJB as expected but when invoking the restricted EJB's I get an exception saying that "Authorization failed for /UNAUTHENTICATED ". This is even though I am passing the credentials and principle in as properties to the constructor of InitialContext e.g.
props.put(Context.SECURITY_PRINCIPLE,"user1");
props.put(Context.SECURITY_CREDENTIALS,"userpassword");
InitialContext myCtx = new InitialContext(props);
I have also tried to authenticate using the ServerSideAuthenticator class which ships with websphere. I can authenticate as user1 in an EJB and call another EJB and the credentials are propgated in the call as I would expect however if I use the serverside authenticator in the webtier in the action servlet and then invoke an EJB the credentials are not propogated and I get the same error.
Does anyone have any ideas on how to do this ? Ideally we would like to be as J2EE as possible but are not sure if this can be done with our app server. If this is not possible does anyone know how to do it in a websphere kind of way !!!I'm getting the same problem..did u find a solution for this?
-
JDeveloper 11g Toplink Session Configuration Editor Error
Hi everone,
In JDeveloper11g Relase1, Session Configuration Editor doesn't run correctly, always crashes,
and session.xml configuration file has validation errors, for example:
element primary-project not expected.
element login not expected.
element connection-pools not expected.
When I run a project, session.xml file doesn't parse correctly so no database connection establisted.
I am sending my session.xml file and error log.
Best Regards.
Session.XML file
<?xml version="1.0" encoding="windows-1254"?>
<toplink-sessions version="11g Release 1 (11.1.1.1.0)" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<session xsi:type="server-session">
<name>AnahtarV3</name>
<server-platform xsi:type="weblogic-10-platform"/>
<primary-project xsi:type="xml">META-INF/ToplinkMap.xml</primary-project>
<login xsi:type="database-login">
<platform-class>oracle.toplink.platform.database.oracle.Oracle11Platform</platform-class>
<user-name>xxxx</user-name>
<password>7D39547AAAC98C485237BC9ABBBAEFBA</password>
<sequencing>
<default-sequence xsi:type="native-sequence">
<preallocation-size>1</preallocation-size>
</default-sequence>
</sequencing>
<driver-class>oracle.jdbc.OracleDriver</driver-class>
<connection-url>jdbc:oracle:thin:@xx.yyyy.www:1521:zzzz</connection-url>
<force-field-names-to-upper-case>true</force-field-names-to-upper-case>
<optimize-data-conversion>true</optimize-data-conversion>
<trim-strings>false</trim-strings>
</login>
<connection-pools>
<read-connection-pool>
<name>read</name>
<max-connections>1</max-connections>
<min-connections>1</min-connections>
<login xsi:type="database-login">
<user-name>bonus</user-name>
<password>C9AB9547D3AC98C485237B7AABBAEFBA</password>
<driver-class>oracle.jdbc.OracleDriver</driver-class>
<connection-url>jdbc:oracle:thin:@oratest.boyner.trk:1521:bdbtest</connection-url>
</login>
</read-connection-pool>
<write-connection-pool>
<max-connections>1</max-connections>
<min-connections>1</min-connections>
</write-connection-pool>
</connection-pools>
</session>
</toplink-sessions>
Error Log:
javax.ejb.EJBException: EJB Exception: : Local Exception Stack:
Exception Description: Several [3] SessionLoaderExceptions were thrown:
org.xml.sax.SAXParseException: <Line 35, Column 30>: XML-24534: (Error) Element 'max-connections' not expected.
org.xml.sax.SAXParseException: <Line 36, Column 30>: XML-24534: (Error) Element 'min-connections' not expected.
org.xml.sax.SAXParseException: <Line 37, Column 34>: XML-24521: (Error) Element not completed: 'write-connection-pool'
at oracle.toplink.exceptions.SessionLoaderException.finalException(SessionLoaderException.java:91)
at oracle.toplink.tools.sessionconfiguration.XMLSessionConfigLoader.load(XMLSessionConfigLoader.java:250)
at oracle.toplink.tools.sessionmanagement.SessionManager.getSession(SessionManager.java:448)
at oracle.toplink.tools.sessionmanagement.SessionManager.getSession(SessionManager.java:409)
at oracle.toplink.util.SessionFactory.getSharedSession(SessionFactory.java:137)
at oracle.toplink.util.SessionFactory.getSharedSession(SessionFactory.java:116)
at oracle.toplink.util.SessionFactory.acquireSession(SessionFactory.java:156)
at com.boyner.anahtar.ejb.user.Session.findTUserByUsernameAndPassword(Session.java:66)
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:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy122.findTUserByUsernameAndPassword(Unknown Source)
at com.boyner.anahtar.ejb.user.Session_pgpyv4_lSessionImpl.findTUserByUsernameAndPassword(Session_pgpyv4_lSessionImpl.java:307)
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:597)
at oracle.adf.model.binding.DCInvokeMethod.invokeMethod(DCInvokeMethod.java:561)
at oracle.adf.model.binding.DCDataControl.invokeMethod(DCDataControl.java:2113)
at oracle.adf.model.bc4j.DCJboDataControl.invokeMethod(DCJboDataControl.java:3009)
at oracle.adf.model.bean.DCBeanDataControl.invokeMethod(DCBeanDataControl.java:436)
at oracle.adf.model.binding.DCInvokeMethod.callMethod(DCInvokeMethod.java:256)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1437)
at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2120)
at oracle.adf.model.bean.DCBeanDataControl.invokeOperation(DCBeanDataControl.java:464)
at oracle.adf.model.adapter.AdapterDCService.invokeOperation(AdapterDCService.java:307)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:693)
at oracle.adf.controller.v2.lifecycle.PageLifecycleImpl.executeEvent(PageLifecycleImpl.java:394)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding._execute(FacesCtrlActionBinding.java:217)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding.execute(FacesCtrlActionBinding.java:201)
at com.boyner.anahtar.utility.ADFUtils.executeOperation(ADFUtils.java:110)
at com.boyner.anahtar.session.BSession.btnLogin_ClientListener(BSession.java:82)
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:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:157)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
at com.sun.faces.application.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.boyner.anahtar.utility.BInProgressDialog.executeMethod(BInProgressDialog.java:81)
at com.boyner.anahtar.utility.BInProgressDialog.onPopupOpened_ClientListener(BInProgressDialog.java:71)
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:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:157)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
at oracle.adf.view.rich.event.ClientListenerSet.invokeCustomEventListeners(ClientListenerSet.java:176)
at oracle.adfinternal.view.faces.context.RichPhaseListener$DeliverClientEvent.invokeContextCallback(RichPhaseListener.java:589)
at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnComponent(UIXComponentBase.java:1392)
at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnChildrenComponents(UIXComponentBase.java:1312)
at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnComponent(UIXComponentBase.java:1406)
at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnChildrenComponents(UIXComponentBase.java:1312)
at org.apache.myfaces.trinidad.component.UIXComponentBase.invokeOnComponent(UIXComponentBase.java:1406)
at oracle.adf.view.rich.component.rich.RichDocument.invokeOnComponent(RichDocument.java:159)
at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:731)
at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:675)
at oracle.adfinternal.view.faces.context.RichPhaseListener._invokeCustomEvents(RichPhaseListener.java:390)
at oracle.adfinternal.view.faces.context.RichPhaseListener.afterPhase(RichPhaseListener.java:331)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:352)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:165)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:191)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:85)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:54)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:247)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:157)
at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.security.jps.wls.JpsWlsFilter$1.run(JpsWlsFilter.java:96)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
at oracle.security.jps.wls.util.JpsWlsUtil.runJaasMode(JpsWlsUtil.java:146)
at oracle.security.jps.wls.JpsWlsFilter.doFilter(JpsWlsFilter.java:140)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:70)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at com.boyner.anahtar.http.compress.GZIPFilter.doFilter(GZIPFilter.java:32)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:159)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:202)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3588)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2200)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2106)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1428)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)Did you get the solution?
i am facing the similiar problem -
Java user-defined transaction management not working correctly???
Hi everyone,
I have encountered a problem when using Java user-defined transaction management in my session bean. It threw an exception but I could not work out what that means. Could anyone comment on this? Thanks.
This BrokerBean is a stateless session calling other entities bean to perform some simple operations. There are 2 Cloudscape databases in use. Invoices (EB) use InvoiceDB and all the other EBs use StockDB.
If I comment out the user-defined transaction management code, then everything works fine. Or if I comment out the Invoices EB code, it is fine as well. It seemed to me that there is something wrong in transaction management when dealing with distributed databases.
--------------- source code ----------------------
public void CreateInvoices(int sub_accno) {
try {
utx = context.getUserTransaction();
utx.begin();
SubAcc subAcc = subAccHome.findByPrimaryKey(new SubAccPK(sub_accno));
String sub_name = subAcc.getSubName();
String sub_address = subAcc.getSubAddress();
Collection c = stockTransHome.findBySubAccno(sub_accno);
Iterator i = c.iterator();
ArrayList a = new ArrayList();
while (i.hasNext()) {
StockTrans stockTrans = (StockTrans)i.next();
int trans_id = stockTrans.getTransID();
String tran_type = stockTrans.getTranType();
int stock_id = stockTrans.getStockID();
float price = stockTrans.getPrice();
Invoices invoices = invoicesHome.create(sub_accno, sub_name, sub_address, trans_id, stock_id, tran_type, price);
stockTrans = stockTransHome.findByPrimaryKey(new StockTransPK(trans_id));
stockTrans.remove();
utx.commit();
utx = null;
} catch (Exception e) {
if (utx != null) {
try {
utx.rollback();
utx = null;
catch (Exception ex) {}
// e.printStackTrace();
throw new EJBException("BrokerBean.CreateInvoices(): " + e.getMessage());
--------------- exception ----------------------
Initiating login ...
Enter Username:
Enter Password:
Binding name:`java:comp/env/ejb/BrokerSB`
EJB test succeed
Test BuyStock!
Test BuyStock!
Test BuyStock!
Test BuyStock!
Test SellStock!
Test SellStock!
Caught an exception.
java.rmi.ServerException: RemoteException occurred in server thread; nested exce
ption is:
java.rmi.RemoteException: BrokerBean.CreateInvoices(): CORBA TRANSACTION
_ROLLEDBACK 9998 Maybe; nested exception is:
org.omg.CORBA.TRANSACTION_ROLLEDBACK: vmcid: 0x2000 minor code: 1806
completed: Maybe
at com.sun.corba.ee.internal.iiop.ShutdownUtilDelegate.mapSystemExceptio
n(ShutdownUtilDelegate.java:64)
at javax.rmi.CORBA.Util.mapSystemException(Util.java:65)
at BrokerStub.CreateInvoices(Unknown Source)
at Client.main(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.sun.enterprise.util.Utility.invokeApplicationMain(Utility.java:22
9)
at com.sun.enterprise.appclient.Main.main(Main.java:155)
Caused by: java.rmi.RemoteException: BrokerBean.CreateInvoices(): CORBA TRANSACT
ION_ROLLEDBACK 9998 Maybe; nested exception is:
org.omg.CORBA.TRANSACTION_ROLLEDBACK: vmcid: 0x2000 minor code: 1806
completed: Maybe
at com.sun.enterprise.iiop.POAProtocolMgr.mapException(POAProtocolMgr.ja
va:389)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:43
1)
at BrokerBean_EJBObjectImpl.CreateInvoices(BrokerBean_EJBObjectImpl.java
:265)
at BrokerBeanEJBObjectImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispatchToServant(Ge
nericPOAServerSC.java:520)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.internalDispatch(Gen
ericPOAServerSC.java:210)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispatch(GenericPOAS
erverSC.java:112)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:255)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process(RequestProces
sor.java:84)
at com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run(ThreadP
ool.java:99)Three things:
first, maybe you should think of putting ut.begin() just before the invoicesHome.create() method and ut.commit() just after the stockTrans.remove() method.It wont solve the current problem but will help in performance once the problem is solved.
second, your utx.commit() is outside the try block. how come the code is compiling then??
third, try doing a SOP call before and after invoicesHome.create() method and see where the problem actually lies.
let us know...
Hi SteveW2,
Thanks for being so helpful. Here are my replies:
Can I just ask why you're not using containermanaged
transactions?The reason why I didn't use container managed
transactions is because I don't really know how to do
that. I am more familiar with this user-defined
transaction handling.
I have attempted to implement the same method in an
entity bean and just let the container manage the
rollback itself. The same exception was thrown when
running the client.
Also, the transaction behaviour is likely to relateto
the app server youre using - which is it?What do you mean by the app server? I am using J2EE
1.3.1 if that is what you meant.
Finally, if your code has a problem rolling back,and
throws an exception, you discard your exception
thereby losing useful information.I have tried to print the exception stack as well, but
it is the same as just printing the general
exception.
This problem is very strange cause if I comment out
the transaction management thing, then everything
works fine. Or if I am only working with 1 single
database, with this user-defined transaction handling,
everything works fine as well.
Here is the error log from J2EE server if you are
interested.
------------ error log ---------------
javax.ejb.TransactionRolledbackLocalException:
Exception thrown from bean; nested exception is:
javax.ejb.EJBException: ejbCreate: Connection
previously closed, open another Connection
javax.ejb.EJBException: ejbCreate: Connection
previously closed, open another Connection
at InvoicesBean.ejbCreate(Unknown Source)
at
InvoicesBean_RemoteHomeImpl.create(InvoicesBean_Remote
omeImpl.java:31)
at InvoicesHomeStub.create(Unknown Source)
at BrokerBean.CreateInvoices(Unknown Source)
at
BrokerBean_EJBObjectImpl.CreateInvoices(BrokerBean_EJB
bjectImpl.java:261)
at BrokerBeanEJBObjectImpl_Tie._invoke(Unknown
Source)
at
com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispa
chToServant(GenericPOAServerSC.java:520)
at
com.sun.corba.ee.internal.POA.GenericPOAServerSC.inter
alDispatch(GenericPOAServerSC.java:210)
at
com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispa
ch(GenericPOAServerSC.java:112)
at
com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:25
at
com.sun.corba.ee.internal.iiop.RequestProcessor.proces
(RequestProcessor.java:84)
at
com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThr
ad.run(ThreadPool.java:99)
javax.ejb.TransactionRolledbackLocalException:
Exception thrown from bean; nested exception is:
javax.ejb.EJBException: ejbCreate: Connection
previously closed, open another Connection
at
com.sun.ejb.containers.BaseContainer.checkExceptionCli
ntTx(BaseContainer.java:1434)
at
com.sun.ejb.containers.BaseContainer.postInvokeTx(Base
ontainer.java:1294)
at
com.sun.ejb.containers.BaseContainer.postInvoke(BaseCo
tainer.java:403)
at
InvoicesBean_RemoteHomeImpl.create(InvoicesBean_Remote
omeImpl.java:37)
at InvoicesHomeStub.create(Unknown Source)
at BrokerBean.CreateInvoices(Unknown Source)
at
BrokerBean_EJBObjectImpl.CreateInvoices(BrokerBean_EJB
bjectImpl.java:261)
at BrokerBeanEJBObjectImpl_Tie._invoke(Unknown
Source)
at
com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispa
chToServant(GenericPOAServerSC.java:520)
at
com.sun.corba.ee.internal.POA.GenericPOAServerSC.inter
alDispatch(GenericPOAServerSC.java:210)
at
com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispa
ch(GenericPOAServerSC.java:112)
at
com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:25
at
com.sun.corba.ee.internal.iiop.RequestProcessor.proces
(RequestProcessor.java:84)
at
com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThr
ad.run(ThreadPool.java:99)
What is "connection previously closed, open another
connection"? This might be the cause of the
exception.
I'll keep trying till I solve the problem.
Thanks,
Sasuke
Maybe you are looking for
-
Weblogs for different message mapping needed
Hi, I want to do scenarios using XSLT mapping, ABAP mapping, Java mapping. Can you suggest me some weblogs... Thanks, Ram
-
I can't get rid of an obsolete update
Running 3.6.16, my help menu shows "Apply Downloaded Update Now". If I select this, nothing much happens and FF asks to restart, upon which the Help menu still has the same item. I had to upgrade to 3.1.17 by hand. I want to know: what files (and whe
-
Image/BufferedImage - PNG - Stream - Database?
I'm capturing an Image via clipboard paste action on a JTextArea, this part works fine. 1. I need to convert this image to a PNG format to... 2. store the PNG encoded image into a database using a PreparedStatement, that requires an InputStream. The
-
Adding RSS feeds in Wiki's web snippet
My specific goal is to add a Google News feed onto a Wiki page. More generally I think it would be great to have other RSS feeds as pages within my company's wiki to educate and track industry trends. I would think this is done through a web snippet.
-
Oracle.forms PACKAGE?
Hello experts, i want to get the info on oracle.forms java classes and function in frmall.jar in forms10g. please send me the link where i can read and create the program in java by using the oracle.forms classes. thanks yash