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