You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by sujith k <su...@amritatech.com> on 2008/04/04 08:47:47 UTC
DataSource Look up using Tomcat
In our development environment currently we are using mokeEJB and we are
planning to switch to OpenEJB.
As I am new to OpenEJB and I have some doubts regarding the OpenEJB.
1) In my openejb.xml I have given the resource as
<Resource id="MySqlDS" type="DataSource">
JdbcDriver com.mysql.jdbc.Driver
JdbcUrl jdbc:mysql://localhost:3306/test
UserName root
Password root
</Resource>
How can I lookup this resource in my servlet which is called while
startup itself (I am using Tomcat.)
2) In our current application we are accessing the DataSource as
DataSource ds = (DataSource)context.lookup("java:/MySqlDS"); is it
possible to get the datasouce object like this in OpenEJB?
--
View this message in context: http://www.nabble.com/DataSource-Look-up-using-Tomcat-tp16485977p16485977.html
Sent from the OpenEJB User mailing list archive at Nabble.com.
Re: DataSource Look up using Tomcat
Posted by sujith k <su...@amritatech.com>.
I made changes in openejb.xml, now it is working fine. My modified
openejb.xml is given bellow.
<Resource id="MySqlDS" type="DataSource">
# MySQL example
#
# This connector will not work until you download the driver at:
# http://www.mysql.com/downloads/api-jdbc-stable.html
JdbcDriver com.mysql.jdbc.Driver
JdbcUrl jdbc:mysql://localhost:3306/test
UserName root
Password root
JtaManaged false
</Resource>
sujith k wrote:
>
>
>
> Thank you for your replay. I have set up my application to run using
> openejb. Tomcat
> datasource lookup is working fine. In my application we r using kodo O/R
> mapping
> and persistence engine. While executing the application it is giving
> error, but the
> transaction is committing. The error message is given bellow.
>
> NestedThrowables:
> java.sql.SQLException: Commit can not be set while enrolled in a
> transaction
> at
> kodo.jdbc.sql.SQLExceptions.getFatalDataStore(SQLExceptions.java:42)
> at
> kodo.jdbc.sql.SQLExceptions.getFatalDataStore(SQLExceptions.java:24)
> at
> kodo.jdbc.runtime.JDBCStoreManager.commit(JDBCStoreManager.java:137)
> at
> kodo.runtime.DelegatingStoreManager.commit(DelegatingStoreManager.java:100)
> at
> kodo.runtime.PersistenceManagerImpl.endTransaction(PersistenceManagerImpl.java:1035)
> at
> kodo.runtime.PersistenceManagerImpl.afterCompletion(PersistenceManagerImpl.java:842)
> at
> org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:534)
> at
> org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:527)
> at
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:326)
> at
> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:245)
> at
> org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:141)
> at
> org.apache.openejb.core.transaction.TxRequired.afterInvoke(TxRequired.java:75)
> at
> org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:233)
> at
> org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
> at
> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
> at
> org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)
> at
> org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)
> at
> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:245)
> at
> org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
> at $Proxy106.getVisitInfoFromId(Unknown Source)
> at
> org.amma.aitf.his.mrdviewer.controller.BlankPageController.addNewForm(BlankPageController.java:126)
> at
> org.amma.aitf.his.mrdviewer.controller.BlankPageController.doPageRequested(BlankPageController.java:75)
> at
> org.amma.aitf.hmoscore.ui.controller.BaseController.pageRequested(BaseController.java:441)
> at com.salmonllc.html.HtmlPage.notifyListeners(HtmlPage.java:1159)
> at
> com.salmonllc.jsp.JspController.notifyListeners(JspController.java:973)
> at com.salmonllc.jsp.JspController.doGet(JspController.java:589)
> at com.salmonllc.jsp.tags.PageTag.doStartTag(PageTag.java:215)
> at
> org.apache.jsp.BlankPage_jsp._jspx_meth_jade_page_0(BlankPage_jsp.java:167)
> at
> org.apache.jsp.BlankPage_jsp._jspService(BlankPage_jsp.java:100)
> at com.salmonllc.jsp.JspServlet.service(JspServlet.java:328)
> at
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
> at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
> at
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> at
> org.apache.openejb.tomcat.OpenEJBValve.invoke(OpenEJBValve.java:45)
> at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
> at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> at java.lang.Thread.run(Thread.java:595)
> Caused by: java.sql.SQLException: Commit can not be set while enrolled in
> a transaction
> at
> org.apache.commons.dbcp.managed.ManagedConnection.commit(ManagedConnection.java:210)
> at
> com.solarmetric.jdbc.DelegatingConnection.commit(DelegatingConnection.java:184)
> at
> com.solarmetric.jdbc.LoggingConnectionDecorator$LoggingConnection.commit(LoggingConnectionDecorator.java:219)
> at
> com.solarmetric.jdbc.DelegatingConnection.commit(DelegatingConnection.java:184)
> at
> com.solarmetric.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.commit(ConfiguringConnectionDecorator.java:127)
> at
> com.solarmetric.jdbc.DelegatingConnection.commit(DelegatingConnection.java:184)
> at
> kodo.jdbc.runtime.JDBCStoreManager.commit(JDBCStoreManager.java:132)
> ... 45 more
>
>
> David Blevins wrote:
>>
>>
>> On Apr 3, 2008, at 11:47 PM, sujith k wrote:
>>>
>>> In our development environment currently we are using mokeEJB and we
>>> are
>>> planning to switch to OpenEJB.
>>> As I am new to OpenEJB and I have some doubts regarding the OpenEJB.
>>>
>>> 1) In my openejb.xml I have given the resource as
>>> <Resource id="MySqlDS" type="DataSource">
>>> JdbcDriver com.mysql.jdbc.Driver
>>> JdbcUrl jdbc:mysql://localhost:3306/test
>>> UserName root
>>> Password root
>>> </Resource>
>>> How can I lookup this resource in my servlet which is called while
>>> startup itself (I am using Tomcat.)
>>>
>>> 2) In our current application we are accessing the DataSource as
>>> DataSource ds = (DataSource)context.lookup("java:/MySqlDS"); is it
>>> possible to get the datasouce object like this in OpenEJB?
>>
>> The absolute simplest way is to annotate your servlet like so:
>>
>> @Resource(name="MySqlDS")
>> private DataSource mySqlDS;
>>
>> We will inject the data source right into your servlet and you don't
>> have to bother with messy lookups.
>>
>> On a side note, "java:/MySqlDS" is a non standard jndi name that isn't
>> portable. The portable way is to use the annotation above or to
>> declare a <resource-ref> tag in your web.xml with a <resource-ref-
>> name> like "MySqlDS" and a lookup like "java:comp/env/MySqlDS".
>>
>> -David
>>
>>
>>
>
>
--
View this message in context: http://www.nabble.com/DataSource-Look-up-using-Tomcat-tp16485977p16583836.html
Sent from the OpenEJB User mailing list archive at Nabble.com.
Re: DataSource Look up using Tomcat
Posted by sujith k <su...@amritatech.com>.
Thank you for your replay. I have set up my application to run using
openejb. Tomcat
datasource lookup is working fine. In my application we r using kodo O/R
mapping
and persistence engine. While executing the application it is giving error,
but the
transaction is committing. The error message is given bellow.
NestedThrowables:
java.sql.SQLException: Commit can not be set while enrolled in a transaction
at
kodo.jdbc.sql.SQLExceptions.getFatalDataStore(SQLExceptions.java:42)
at
kodo.jdbc.sql.SQLExceptions.getFatalDataStore(SQLExceptions.java:24)
at
kodo.jdbc.runtime.JDBCStoreManager.commit(JDBCStoreManager.java:137)
at
kodo.runtime.DelegatingStoreManager.commit(DelegatingStoreManager.java:100)
at
kodo.runtime.PersistenceManagerImpl.endTransaction(PersistenceManagerImpl.java:1035)
at
kodo.runtime.PersistenceManagerImpl.afterCompletion(PersistenceManagerImpl.java:842)
at
org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:534)
at
org.apache.geronimo.transaction.manager.TransactionImpl.afterCompletion(TransactionImpl.java:527)
at
org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:326)
at
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:245)
at
org.apache.openejb.core.transaction.TransactionPolicy.commitTransaction(TransactionPolicy.java:141)
at
org.apache.openejb.core.transaction.TxRequired.afterInvoke(TxRequired.java:75)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:233)
at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188)
at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165)
at
org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)
at
org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)
at
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:245)
at
org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
at $Proxy106.getVisitInfoFromId(Unknown Source)
at
org.amma.aitf.his.mrdviewer.controller.BlankPageController.addNewForm(BlankPageController.java:126)
at
org.amma.aitf.his.mrdviewer.controller.BlankPageController.doPageRequested(BlankPageController.java:75)
at
org.amma.aitf.hmoscore.ui.controller.BaseController.pageRequested(BaseController.java:441)
at com.salmonllc.html.HtmlPage.notifyListeners(HtmlPage.java:1159)
at
com.salmonllc.jsp.JspController.notifyListeners(JspController.java:973)
at com.salmonllc.jsp.JspController.doGet(JspController.java:589)
at com.salmonllc.jsp.tags.PageTag.doStartTag(PageTag.java:215)
at
org.apache.jsp.BlankPage_jsp._jspx_meth_jade_page_0(BlankPage_jsp.java:167)
at org.apache.jsp.BlankPage_jsp._jspService(BlankPage_jsp.java:100)
at com.salmonllc.jsp.JspServlet.service(JspServlet.java:328)
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.apache.openejb.tomcat.OpenEJBValve.invoke(OpenEJBValve.java:45)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: Commit can not be set while enrolled in a
transaction
at
org.apache.commons.dbcp.managed.ManagedConnection.commit(ManagedConnection.java:210)
at
com.solarmetric.jdbc.DelegatingConnection.commit(DelegatingConnection.java:184)
at
com.solarmetric.jdbc.LoggingConnectionDecorator$LoggingConnection.commit(LoggingConnectionDecorator.java:219)
at
com.solarmetric.jdbc.DelegatingConnection.commit(DelegatingConnection.java:184)
at
com.solarmetric.jdbc.ConfiguringConnectionDecorator$ConfiguringConnection.commit(ConfiguringConnectionDecorator.java:127)
at
com.solarmetric.jdbc.DelegatingConnection.commit(DelegatingConnection.java:184)
at
kodo.jdbc.runtime.JDBCStoreManager.commit(JDBCStoreManager.java:132)
... 45 more
David Blevins wrote:
>
>
> On Apr 3, 2008, at 11:47 PM, sujith k wrote:
>>
>> In our development environment currently we are using mokeEJB and we
>> are
>> planning to switch to OpenEJB.
>> As I am new to OpenEJB and I have some doubts regarding the OpenEJB.
>>
>> 1) In my openejb.xml I have given the resource as
>> <Resource id="MySqlDS" type="DataSource">
>> JdbcDriver com.mysql.jdbc.Driver
>> JdbcUrl jdbc:mysql://localhost:3306/test
>> UserName root
>> Password root
>> </Resource>
>> How can I lookup this resource in my servlet which is called while
>> startup itself (I am using Tomcat.)
>>
>> 2) In our current application we are accessing the DataSource as
>> DataSource ds = (DataSource)context.lookup("java:/MySqlDS"); is it
>> possible to get the datasouce object like this in OpenEJB?
>
> The absolute simplest way is to annotate your servlet like so:
>
> @Resource(name="MySqlDS")
> private DataSource mySqlDS;
>
> We will inject the data source right into your servlet and you don't
> have to bother with messy lookups.
>
> On a side note, "java:/MySqlDS" is a non standard jndi name that isn't
> portable. The portable way is to use the annotation above or to
> declare a <resource-ref> tag in your web.xml with a <resource-ref-
> name> like "MySqlDS" and a lookup like "java:comp/env/MySqlDS".
>
> -David
>
>
>
--
View this message in context: http://www.nabble.com/DataSource-Look-up-using-Tomcat-tp16485977p16537327.html
Sent from the OpenEJB User mailing list archive at Nabble.com.
Re: DataSource Look up using Tomcat
Posted by David Blevins <da...@visi.com>.
On Apr 3, 2008, at 11:47 PM, sujith k wrote:
>
> In our development environment currently we are using mokeEJB and we
> are
> planning to switch to OpenEJB.
> As I am new to OpenEJB and I have some doubts regarding the OpenEJB.
>
> 1) In my openejb.xml I have given the resource as
> <Resource id="MySqlDS" type="DataSource">
> JdbcDriver com.mysql.jdbc.Driver
> JdbcUrl jdbc:mysql://localhost:3306/test
> UserName root
> Password root
> </Resource>
> How can I lookup this resource in my servlet which is called while
> startup itself (I am using Tomcat.)
>
> 2) In our current application we are accessing the DataSource as
> DataSource ds = (DataSource)context.lookup("java:/MySqlDS"); is it
> possible to get the datasouce object like this in OpenEJB?
The absolute simplest way is to annotate your servlet like so:
@Resource(name="MySqlDS")
private DataSource mySqlDS;
We will inject the data source right into your servlet and you don't
have to bother with messy lookups.
On a side note, "java:/MySqlDS" is a non standard jndi name that isn't
portable. The portable way is to use the annotation above or to
declare a <resource-ref> tag in your web.xml with a <resource-ref-
name> like "MySqlDS" and a lookup like "java:comp/env/MySqlDS".
-David