JNDI DataSource setup under JDev 10.1.3.2
I have a simple app of a dozen JSP pages, initially delevoped under JDev then deployed (copied, really) to Tomcat. It works fine. I am not using ADF or anything fancy (just JDBC from beans called from the pages). Then I wanted to start using the DBCP pooling that comes standard with Tomcat. This actually worked fine from my adapted pages (now using the jakarta DataSource factory managed by TC). But I have been unable to reproduce the setup in my local development environment, namely JDeveloper 10.1.3.2.
What works so far: I've created a workspace DataSource in the OC4J preferences, added a reference to it in my app's web.xml. Then I can refer to it and use the DS from a simple JSP using JSTL and SQL tags. But my own code cannot seem to be able to retrieve the DS via JNDI using the following snippet:
bq. {color:#000080}Context envContext = (Context) new InitialContext().lookup("java:/comp/env");{color} \\ {color:#000080}return (DataSource) envContext.lookup( dsName );{color}
The exception reported to the client is the following:
bq. {color:#ff0000}java:/comp/env not found \\ {color} \\ (error class: class javax.naming.NameNotFoundException)
All suggestions welcome!
{color:#808080}To the mods: I'd gladly have read the instructions in the sticky
"Please read this before you post" but it won't display correctly. And
I've tried IE6 and SeaMonkey - come on Oracle, you can do better!
{color}
Hi!
You probably need to alter your lookup code a bit.
You can do a lookup like this:
Context envContext = (Context) new InitialContext();
return (DataSource) envContext.lookup( "jdbc/dsName" );In OC4J, the datasources usually have JNDI names starting with jdbc/ so the lookup to java:/com/env would not return the datasource.
Also, have a look at http://www.oracle.com/technology/sample_code/tech/java/codesnippet/j2ee/jndi/TestConnection.java.txt
Regards,
Jeroen van Veldhuizen
Similar Messages
-
How to use JNDI datasource instead of database connection settings JDev 10g
Hi,
In order to use the different database from other environments, we are not able to use the JNDI datasource configuration settings, all the time need to configure the database connection settings from JDeveloper by changing the database connectivity settings in the JDeveloper for each environment separately, need a solution on how to make the database connectivity unique using the JNDI datasource name for all the environments for database connectivity settings through the application server console rather than changing the database adapter configuration in JDeveloper.
Please provide the update at the earliest. Your help is greatly appreciated. Thanks in advance..What are you not clear on?
What you need to do is get your developers to conform to a database naming standard, as stated above, so if you have an oracle database that is for eBusiness Suite you get all developers to create a DB connection in JDev called, ora_esb as an example.
When the developer creates a DB adapter this will create a JNDI name of eis/DB/ora_ebs. When the BPEL project is deployed it looks for the JNDI name in the oc4j-ra.xml file to see its connection details. If they don't exist then they use the developers connection details. The issue with this is that they generally always point to the development DB. It is best practice for the developers to remove the mcf settings in the DB adapter WSDL. This way if the JNDI name has not been configured it will fail.
So when you migrate from dev-test-prod what you have is the JNDI name eis/DB/ora_ebs. The dev points to the dev instance of ebs, test points to the test instance and so on. This means that you don't need to adjust any code in the BPEL projects.
cheers
James -
Please Help With TopLink and JNDI datasource
Hello
I have been trying to figure this out for a while now and I am stuck. I have a simple J2EE project that uses toplink to access 1 table with 2 coulumns (JDev 10.1.3).
I setup a sessions.xml and in there set my data Source Location to be my JNDI datasource.
In my tlMap1 file I am required to put a Deployment Connection and no matter what I do it uses that connection. Is there some way I can make it use the JNDI connection that I specified in sessions.xml instead?
i turned on debugging and it gives the following:
[TopLink Config]: 2006.06.02 10:21:06.140--ServerSession(1216)--Connection(1242)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--connecting(DatabaseLogin(
platform=>Oracle10Platform
user name=> "access_tst_d"
connector=>JNDIConnector datasource name=>jdbc/accessEJB
[TopLink Config]: 2006.06.02 10:21:06.328--ServerSession(1216)--Connection(1244)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--Connected: jdbc:oracle:thin:@access-web-test.admin.uni.edu:1525:WEBT
User: ACCESS_TST_D
Database: Oracle Version: Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - 64bit Production
With the Partitioning and Data Mining options
Driver: Oracle JDBC driver Version: 10.1.0.5.0
[TopLink Info]: 2006.06.02 10:21:06.343--ServerSession(1216)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--default login successful
[TopLink Finer]: 2006.06.02 10:21:06.343--ServerSession(1216)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--client acquired
[TopLink Finest]: 2006.06.02 10:21:06.343--ClientSession(1246)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--Execute query ReadAllQuery(pl.model.PlLoginPrefixes)
[TopLink Fine]: 2006.06.02 10:21:06.375--ServerSession(1216)--Connection(1229)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--SELECT LOGIN_PREFIX_ID, PREFIX FROM PL_LOGIN_PREFIXES
[TopLink Finer]: 2006.06.02 10:21:06.953--ClientSession(1246)--Thread(Thread[RMICallHandler-0,5,RequestThreadGroup])--client released
It looks like it sees the JNDI connection but it uses the "user name" parameter from tlMap1 instead. I am really getting desparate and any help would be greatly appreciated.
Thanks
troySorry to be such a pest about this but I have a bit more info now. If I go in to my tlMap file and select <none selected> for my deployment connection, the compiler gives me warnings and the mapping status report gives an error but it uses the jndi source from session.xml.
Does anyone know of a way to do this (use the jndi datasource) without these compiler warnings? I just have this feeling I am doing something wrong, something that should be simple but nevertheless is turning out to be nearly impossible for me to figure out.
thanks
troy -
How do I use a JNDI datasource in my application?
Not sure how to access the JNDI datasource i setup in my config.xml. I tried to browse it at rmi://localhost:1099/ but it only shows jmxrmi in the tree.
My config.xml looks like
<n1:config xsi:schemaLocation="http://www.bea.com/ns/wlevs/config/server wlevs_server_config.xsd" xmlns:n1="http://www.bea.com/ns/wlevs/config/server" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<netio>
<name>NetIO</name>
<port>9002</port>
</netio>
<work-manager>
<name>JettyWorkManager</name>
<min-threads-constraint>5</min-threads-constraint>
<max-threads-constraint>10</max-threads-constraint>
</work-manager>
<jetty>
<name>JettyServer</name>
<network-io-name>NetIO</network-io-name>
<work-manager-name>JettyWorkManager</work-manager-name>
</jetty>
<rmi>
<name>RMI</name>
<http-service-name>JettyServer</http-service-name>
</rmi>
<jndi-context>
<name>JNDI</name>
</jndi-context>
<exported-jndi-context>
<name>exportedJndi</name>
<rmi-service-name>RMI</rmi-service-name>
</exported-jndi-context>
<jmx>
<jndi-service-name>JNDI</jndi-service-name>
<rmi-service-name>RMI</rmi-service-name>
<rmi-registry-port>1099</rmi-registry-port>
<rmi-jrmp-port>9999</rmi-jrmp-port>
</jmx>
<transaction-manager>
<name>transactionmanager</name>
<!--max-resource-requests-on-server>1</max-resource-requests-on-server>
<max-resource-unavailable-millis>1000</max-resource-unavailable-millis-->
</transaction-manager>
<data-source>
<name>hqsqlconn</name>
<driver-params>
<url>jdbc:hsqldb:hsql://localhost/wlevdb</url>
<driver-name>org.hsqldb.jdbcDriver</driver-name>
<properties>
<element>
<name>user</name>
<value>sa</value>
</element>
<element>
<name>password</name>
<value></value>
</element>
</properties>
<use-xa-data-source-interface>true</use-xa-data-source-interface>
</driver-params>
<connection-pool-params>
<initial-capacity>1</initial-capacity>
<max-capacity>5</max-capacity>
<test-table-name>test_table</test-table-name>
</connection-pool-params>
<data-source-params>
<jndi-names>
<element>hqsqlconn</element>
</jndi-names>
<global-transactions-protocol>TwoPhaseCommit</global-transactions-protocol>
</data-source-params>
</data-source>
</n1:config>I see what you are saying.
The JNDI approach should work-we will try to reproduce this internally.
I would recommend leveraging the OSGi service registry, instead of using JNDI, however. The Event Server is a modular server based on OSGi, so one should use the OSGi service registry whenever possible instead of using the jndi registry. Jndi is primarily there to support legacy code that requires Jndi.
Any data sources that you configure are automatically registered in the OSGi service registry. When there is more than one data source they can be distinguished using their name.
There are a couple of options.
If you want to inject a reference to your datasource into a Spring bean, you can use an annotation, @Service, to annotate a setter method on your bean (see my previous post). The container will then inject a reference to the data source into the bean.
You can also put the following in your spring application context file
<osgi:reference id="myDataSource"
interface="javax.sql.DataSource"/>
This creates a bean proxy that references the datasource by looking up the datasource in the OSGi service registry. It works similarly to JndiObjectFactoryBean, but it uses the OSGi service registry instead of the JNDI registry. You can read more about it here
http://www.springframework.org/osgi/specification
(Look in section 3.3)
Hope that helps.
Seth
Edited by swhite at 08/01/2007 6:19 PM -
JNDI DataSource on Tomcat 4.1.27
I am running Tomcat 4.1.27 with JVM 1.3.1_07-b02 on WinXP and I am trying to connect to an Oracle 9i database. I have a datasource setup and when I supply a username and password in the datasource everything connects fine. However, I need to be able to pass the username and password from my application to the datasource for authentication. Whenever I try DataSource.getConnection(username,password) I get an "java.lang.UnsupportedOperationException" exception. I also tried using the BasicDataSource.getConnection(username,password) method with the same results. Here is a bit of the stack trace:
java.lang.UnsupportedOperationException
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:125)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:329)
at foo.Login.loginSuccess(Login.java:45)
Can I get explicit instructions on what I need to do to be able to pass the username and password to the datasource? Is there another/better way to do this? Thanks.The problem is that the JNDI data source pool is set up when your app is loaded into Tomcat. You're giving it a username/password in the context.xml to set that up, then the pool is loaded with connections based on that startup password.
I think it's failing because on subsequent calls you're giving it the individual's username/password, which are different from the one used to set up the connection pool.
If you want to authenticate the users against the database without a separate table, I think you have to give up the advantage of having a connection pool and create a new connection for each user. It's a design choice: is it better for your app to have a separate username/password table and a connection pool or to use the Oracle authentication and have to create a connection each time? Your call. - MOD -
JBOSS jndi Datasource: jdbc not bound
Im adding an jndi Datasource to JBOSS 4.0.2.
1. i copied jdbc driver to JBOSS_HOME/server/default/lib.
2. i copied following ds.xml to JBOSS_HOME/server/default/deploy (its based ony the mysql-ds.xml from the samples)
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>jndi-name</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/databasename</connection-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<user-name>username</user-name>
<password>password</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<!-- sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
-->
<!-- sql to call on an existing pooled connection when it is obtained from pool
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
-->
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>I look this up using java:jndi-name. Works perfect.
For compatibility with other containers, i want to move my jndi-datasource to java:comp/env/jdbc/jndi-name
So i change my ds-description:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>comp/env/jdbc/jndi-name</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/databasename</connection-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<user-name>username</user-name>
<password>password</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<!-- sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
-->
<!-- sql to call on an existing pooled connection when it is obtained from pool
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
-->
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>Looking this up with java:comp/env/jdbc/jndi-name leads to Could not find datasource: java:comp/env/jdbc/jndi-name
javax.naming.NameNotFoundException: jdbc not bound
Some lines above jboss prints:
[WrapperDataSourceService] Bound connection factory for resource adapter for ConnectionManager 'jboss.jca:name=comp/env/jdbc/jndi-name,service=DataSourceBinding to JNDI name 'java:comp/env/jdbc/jndi-name
Please can somebody explain what the problem is about binding a datasource somewhere else than directly to "java:"In web.xml making the following entry:
<web-app>
<description>MySQL Test App</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
Next, add a file jboss-web.xml under WEB-INF/ folder of the web-application. This file should contain entry as:
<jboss-web>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:/jdbc/test</jndi-name>
<res-auth>Container</res-auth>
</resource-ref>
</jboss-web>
Next, in JBOSS_HOME/server/default/deploy folder make a xx-ds.xml file or else, a similiar file can be found in that same folder with the name hsqldb-ds.xml. Make following entries in that xml file:
<datasources>
<local-tx-datasource>
<jndi-name>/jdbc/test</jndi-name>
<type-mapping>MySQL</type-mapping>
<connection-url>jdbc:mysql://localhost:3306/shopping_cart</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root123</password>
<min-pool-size>1</min-pool-size>
<max-pool-size>5</max-pool-size>
</local-tx-datasource>
This should bind the jndi name.
In our client application, we need to look up as:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:/jdbc/test");
Connection conn = ds.getConnection();
This works perfectly. -
CF8 with JBoss JNDI datasource
After installing and configuring a CF8 for J2EE running on
JBoss 4.2.2.GA with Java 6, I have created a JNDI datasource for
Oracle 10g in the oracle-ds.xml file. I have configured a CF8
datasource that uses the JNDI resource.
Any query that is NOT using cfqueryparam works quite well.
As soon as cfqueryparam is used, I get an "Error casting an
object of type org.jboss.resource.adapter.jdbc.WrappedConnection
cannot be cast to coldfusion.server.j2ee.sql.JRunConnectionHandle
to an incompatible type.".
The configuration and the exception is pretty much the same
as described in
Problem
description.
This is clearly a CF8 bug and I was wondering if there is any
known workaround for it.In web.xml making the following entry:
<web-app>
<description>MySQL Test App</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
Next, add a file jboss-web.xml under WEB-INF/ folder of the web-application. This file should contain entry as:
<jboss-web>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:/jdbc/test</jndi-name>
<res-auth>Container</res-auth>
</resource-ref>
</jboss-web>
Next, in JBOSS_HOME/server/default/deploy folder make a xx-ds.xml file or else, a similiar file can be found in that same folder with the name hsqldb-ds.xml. Make following entries in that xml file:
<datasources>
<local-tx-datasource>
<jndi-name>/jdbc/test</jndi-name>
<type-mapping>MySQL</type-mapping>
<connection-url>jdbc:mysql://localhost:3306/shopping_cart</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>root123</password>
<min-pool-size>1</min-pool-size>
<max-pool-size>5</max-pool-size>
</local-tx-datasource>
This should bind the jndi name.
In our client application, we need to look up as:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:/jdbc/test");
Connection conn = ds.getConnection();
This works perfectly. -
RDBMS event generator & JNDI datasources
Hi everyone,
My WLI 8.1 SP5 is going nuts ! I'm under a cluster architecture, WL 8.1 SP6 with Red Hat Linux, JRockit 1.4.2_10. Deploying an application i need to create some RDBMS event generator, but when i do this, i get an NameNotFoundException looking for my jndi datasource ( see below ). The datasource is created and i can work with it, since it's a must for my application. How is it possible that a datasource exists for a web application and does not for an integration event ? Does anyone have any experience about this ? Any help will be very appreciated !!
<18-may-2007 23H47' CEST> <Error> <WLW> <000000> <Error occurred while retrieving the Database Type
javax.naming.NameNotFoundException: Unable to resolve 'DSDataSource' Resolved ; remaining name 'DSDataSource'
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:924)
at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:230)
at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:154)
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:188)
at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:258)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:363)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at com.bea.wli.event.util.EventUtils.getDataSourceConnection(EventUtils.java:640)
at com.bea.wli.oam.rdbmseg.RDBMSChannelValidator.setChannelValues(RDBMSChannelValidator.java:471)
at com.bea.wli.oam.rdbmseg.RDBMSChannelValidator.validate(RDBMSChannelValidator.java:218)
at com.bea.wli.oam.rdbmseg.RDBMSMainServlet.submitChannel(RDBMSMainServlet.java:327)
at com.bea.wli.oam.eg.framework.XEGMainServlet.processRequest(XEGMainServlet.java:88)
at com.bea.wli.oam.eg.framework.XEGMainServlet.doPost(XEGMainServlet.java:151)
at com.bea.wli.oam.core.BaseServlet.userService(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(Unknown Source)
at com.bea.wli.oam.core.BaseServlet.run()Ljava.lang.Object;(Unknown Source)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
at com.bea.wli.security.authentication.AuthenticationService.runAs(AuthenticationService.java:109)
at com.bea.wli.oam.core.BaseServlet.secureService(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(Unknown Source)
at com.bea.wli.oam.core.BaseServlet.service(Ljavax.servlet.http.HttpServletRequest;Ljavax.servlet.http.HttpServletResponse;)V(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1077)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:348)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:7047)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)If you are using a cluster you need to make sure the connection pool and data source are deployed on the admin server. I have had this problem many times before.
-
JNDI datasource context LifeCycleException
Any help with this would be greatly appreciated. I'm trying to set up connection pooling in Tomcat 4.1.27 on Linux using MySQL. I followed the directions from Jakarta here http://jakarta.apache.org/tomcat/tomcat-4.1-doc/printer/jndi-datasource-examples-howto.html
And I put the mysql connector .jar file in Tomcat's common/lib directory.
However, when I start up Tomcat, my webapp doesn't load. There is no error message in the logs or on the console at startup. It just silently fails. Then when I shutdown Tomcat this error appears:
2003-10-17 11:31:12 StandardHost[localhost]: Removing web application at context path /budgetchallenge
2003-10-17 11:31:12 StandardHost[localhost]: ContainerBase.removeChild: stop:
LifecycleException: Container StandardContext[/budgetchallenge] has not been started
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:3644)
at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:1036)
at org.apache.catalina.core.StandardHostDeployer.remove(StandardHostDeployer.java:470)
etc...Here is the node in my web.xml per the directions...
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/budgetchallenge</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>Here is the setup in the server.xml...
<Context path="/budgetchallenge" docBase="budgetchallenge"
debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_budgetchallenge_log." suffix=".txt"
timestamp="true"/>
<Resource name="jdbc/budgetchallenge"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/budgetchallenge">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<!-- Maximum number of dB connections in pool. Make sure you
configure your mysqld max_connections large enough to handle
all of your db connections. Set to 0 for no limit.
-->
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<!-- Maximum number of idle dB connections to retain in pool.
Set to 0 for no limit.
-->
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<!-- Maximum time to wait for a dB connection to become available
in ms, in this example 10 seconds. An Exception is thrown if
this timeout is exceeded. Set to -1 to wait indefinitely.
-->
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<!-- MySQL dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>...</value>
</parameter>
<parameter>
<name>password</name>
<value>...</value>
</parameter>
<!-- Class name for mm.mysql JDBC driver -->
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<!-- The JDBC connection url for connecting to your MySQL dB.
The autoReconnect=true argument to the url makes sure that the
mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
connection. mysqld by default closes idle connections after 8 hours.
-->
<parameter>
<name>url</name>
<value>jdbc:mysql://10.1.1.45:3306/budgetsurvey_02</value>
</parameter>
</ResourceParams>
</Context>Yeah, I've got those all set up.
However, now the application is working, connecting to the DB and everything. The problem was that the deployed .war file was not expanding. The JNDI context specifies and directory with the app name, but there was none because the .war file was not expanded as it usually is automatically in Tomcat.
So I manually expanded it and now the app works. However, I'd like to know why the .war archive was not being automatically expanded.
Ethan -
Beginner Q: Which context.xml to place the DataSource setup?
I am following this tutorial to use DataSource to access the database. http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
I originally place the Resource specificaiton in TOMCAT_HOME/conf/context.xml. My demo app works fine. I then experiment to move that section to My_App/Meta-inf/context.xml. Later, I need to uninstall and re-install Java and Tomcat. Then I run into to the problem in my demo http://forum.java.sun.com/thread.jspa?threadID=5299262
I finally restore the resource section in TOMCAT_HOME/conf/context.xml to make my demo working again. From this explaination of Context (http://tomcat.apache.org/tomcat-6.0-doc/config/context.html), my understanding is that placing the resource in My_App/Meta-inf/context.xml should be better for deployment purpose. I am not understanding the need to placing resource in conf/context.xml.
Is there any tutorial that will explain this context concept? I would like to see different setup in the path and docbase.eventhough it's working fine. I may have deployment problem. Anyway thanks for the reply.
Regards,
Ram -
How to use jndi datasource on Weblogic instead of adding a DB data source
Hi All,
version: 11.1.1.4
I am trying to figure out how in my ADF applications I can use an existing jndi datasource out on our weblogic servers instead of having to bury the Database db source in my adf applications. Like SOA I would like to reference the DB directly during design so I can pull in entities and build view objects, but when I deploy I want it to reference the jndi datasource out on the weblogic server.
Is this possible? If so I am not sure how to configure it like I would a DB adapter in SOA.
As always appreciate the info.
Thanks,
SIf you use ADF in the model layer (application modules) you can configure them to use JNDI Datasources. Just right click on the application module and select 'Configurations...'. In the next dialog you see all the configurations currently available (one named xxxxxlocal and one named xxxxxshared at least). Select the local and hit the edit button. This open the DB connect dialog where you can change the connection from JDBC URL to JDBC Datasource (JNDI). Save your work and when you now start the app it will use the JNDI name.
Timo -
Error: Datasource Configuration under planning
After Successful configuration of
1) Foundation Services (Hyperion Shared Services)
2) Essbase administration services
3) Essbase Server
4) Hyperion reporting and analysis
5) Planning -----> Product options, Register with shared services, configure database, deploy to application server (Appache), Product Instance registration.
I stuck with Datasource Configuration under planning-
Steps in details---
cheked on data source configuration and click next
check create datasource and click next
datasource name : essdb (my choice)
datasource Discription : essbase DB (my choice) click next
select my instance name : plan (from drop down menu) click next
Select Database : MS SQL server click next
Database type: SQL
Port: 1433 (Default)
Database Details:
Product: planning
database : p2DB (new DB, SQL)
user: p2user (new user, SQL)
password: ***
click next
Essbase server information:
Sever : my machine name (neeraj-pc)
user : planning (created new essbase user, external)
password : ******
Click next
Error:
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Kindly suggest steps to cofg correctlydetails of configtool_err (Hyperion-> Logs--> Config)
(Dec 05, 2008, 06:03:22 AM), com.hyperion.planning.HspDSRdbPanelManager, ERROR, Relational Database Connection Failed:= :[Hyperion][SQLServer JDBC Driver][SQLServer]Login failed for user 'p2user'.
(Dec 05, 2008, 06:15:12 AM), com.hyperion.planning.HspDSRdbPanelManager, ERROR, Relational Database Connection Failed:= :[Hyperion][SQLServer JDBC Driver]Error establishing socket to host and port: 220.226.46.164:1433. Reason: Network is unreachable: connect
(Dec 05, 2008, 10:10:06 AM), com.hyperion.planning.HspDSRdbPanelManager, ERROR, Relational Database Connection Failed:= :[Hyperion][SQLServer JDBC Driver][SQLServer]Login failed for user 'p2user'.
Regards
Kumar N -
JSTL sql tags with jndi datasource
Im trying to use JSTL sql tags but get "no suitable driver" when trying to connect
to a jndi datasource. the jakarta dbtags works fine but jstl does not
I figured it out but I'll leave it up to BEA to tell everyone how to doit.
"Fred Forester" <[email protected]> wrote:
>
>
>Im trying to use JSTL sql tags but get "no suitable driver" when trying
>to connect
>to a jndi datasource. the jakarta dbtags works fine but jstl does not
-
Need Help in JNDI Datasource using tomcat and spring
Hi,
I am trying to connect my local database using JNDI datasource in tomcat and spring
I have done the below configuration in Tomcat 7 server:
In tomcat server.xml (Path: E:\apache-tomcat-7.0.35\conf) I added the below configuration
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource name="jdbc/myApp" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:hr@localhost:1521:XE>"
username="testUser" password="password"
maxActive="10" maxIdle="5"
maxWait="60000" removeAbandoned="true"
removeAbandonedTimeout="60" logAbandoned="true"/>
In web.xml, I have added the below config:
<resource-ref>
<description>Oracle Spring JNDI Datasource</description>
<res-ref-name>jdbc/myApp</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
And in my Spring context xml (ws-context.xml), added below config:
<bean name="myDataSourceInJndi" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/myApp"/>
</bean>
<jee:jndi-lookup id="dataSource" jndi-name="/jdbc/myApp" resource-ref="true"/>
In my Java code, I am trying the below code to connect DataBase:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/myApp");
ds.getConnection();
But I am getting the below exception while executing ****ds.getConnection();***
java.lang.IllegalStateException: Connection factory returned null from createConnection
at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:584)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at com.wipro.spring.impl.EmployeeImpl.getDetails(EmployeeImpl.java:57)
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.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:246)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:471)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:129)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:160)
at com.sun.xml.ws.transport.http.servlet.WSSpringServlet.doPost(WSSpringServlet.java:52)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1822)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Can you please me to resolve this issue? Am I missing any configuration or any mistake in my java code please suggest your suggestions.
ThanksHi,
I am trying to connect my local database using JNDI datasource in tomcat and spring
I have done the below configuration in Tomcat 7 server:
In tomcat server.xml (Path: E:\apache-tomcat-7.0.35\conf) I added the below configuration
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource name="jdbc/myApp" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:hr@localhost:1521:XE>"
username="testUser" password="password"
maxActive="10" maxIdle="5"
maxWait="60000" removeAbandoned="true"
removeAbandonedTimeout="60" logAbandoned="true"/>
In web.xml, I have added the below config:
<resource-ref>
<description>Oracle Spring JNDI Datasource</description>
<res-ref-name>jdbc/myApp</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
And in my Spring context xml (ws-context.xml), added below config:
<bean name="myDataSourceInJndi" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/myApp"/>
</bean>
<jee:jndi-lookup id="dataSource" jndi-name="/jdbc/myApp" resource-ref="true"/>
In my Java code, I am trying the below code to connect DataBase:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/myApp");
ds.getConnection();
But I am getting the below exception while executing ****ds.getConnection();***
java.lang.IllegalStateException: Connection factory returned null from createConnection
at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:584)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at com.wipro.spring.impl.EmployeeImpl.getDetails(EmployeeImpl.java:57)
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.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:246)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:146)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:257)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:471)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:129)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:160)
at com.sun.xml.ws.transport.http.servlet.WSSpringServlet.doPost(WSSpringServlet.java:52)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1822)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Can you please me to resolve this issue? Am I missing any configuration or any mistake in my java code please suggest your suggestions.
Thanks -
BC4J and JNDI DataSource Configuration
Hi,
I need help in making the BC4J use a DataSource for creating connections. Could you anyone tell me step by step instructions to do it?
I have created a Database Connection using JDBC for creating a BC4J App Module, View Objects etc.
Then I created a Business Component Package by using the wizard. Everything worked fine till now. But I was to use a connection pool that is created in my App Server which happens to be a WebLogic 7.0 App Server. I have created a JDBCConnection pool and a JDBCDataSource in the App Server. The configuration for it is as follows in the weblogic configuration file.
<JDBCConnectionPool DriverName="oracle.jdbc.driver.OracleDriver"
MaxCapacity="5" Name="OracleConnectionPool"
Password="{3DES}n51DlVgPmmQ="
Properties="user=empac;dll=ocijdbc9;protocol=oci"
Targets="myserver" URL="jdbc:oracle:oci:@DB921C"/>
<JDBCDataSource JNDIName="OCIDataSource" Name="OCIDataSource"
PoolName="OracleConnectionPool" Targets="myserver"/>
I wanted to edit the "Configurations" to specify the JDBC DataSource. When I saved the configuration for the App Module this is how my bc4j.xcfg looks.
<?xml version = '1.0' encoding = 'UTF-8'?>
<BC4JConfig>
<AppModuleConfigBag>
<AppModuleConfig name="BuyerModuleLocal">
<java.naming.security.principal>system</java.naming.security.principal>
<DeployPlatform>LOCAL</DeployPlatform>
<jbo.TypeMapEntries>Java</jbo.TypeMapEntries>
<JDBCDataSource>OCIDataSource</JDBCDataSource>
<jbo.project>BC4JTry</jbo.project>
<AppModuleJndiName>com.explore.bc4j.BuyerModule</AppModuleJndiName>
<ApplicationName>com.explore.bc4j.BuyerModule</ApplicationName>
<java.naming.security.credentials>security</java.naming.security.credentials>
</AppModuleConfig>
</AppModuleConfigBag>
<ConnectionDefinition name="DB921C">
<ENTRY name="JDBC_PORT" value="1521"/>
<ENTRY name="ConnectionType" value="JDBC"/>
<ENTRY name="HOSTNAME" value="joshua"/>
<ENTRY name="user" value="empac"/>
<ENTRY name="ConnectionName" value="DB921C"/>
<ENTRY name="SID" value="DB921C"/>
<ENTRY name="JdbcDriver" value="oracle.jdbc.driver.OracleDriver"/>
<ENTRY name="password" value="empac"/>
<ENTRY name="ORACLE_JDBC_TYPE" value="thin"/>
<ENTRY name="DeployPassword" value="true"/>
</ConnectionDefinition>
</BC4JConfig>
When I tried to run a testClient which uses the App Module it is failing giving me an exception saying could not lookup for the DataSource. In one of the detailed error messages, I got this error.
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
I checked the "Configurations" window and it was having
"oracle.jbo.common.JboInitialContextFactory" for the property "java.naming.factory.initial".
Could anyone tell me how to solve this issue. I did read the BC4J & JNDI Datasource configuration thread in the same forum and unfortunately that did not help.
KrishWhat does you test client code look like and can you give us the complete stack trace.
Dhiraj
Maybe you are looking for
-
how do i change a pdf file to a word document?
-
i had another person log into my app store on my iphone4 and now his email address comes up on certain things when I try to update and app
-
Configuration Files Location in Weblogic 10.3
Hi, May I know where should i keep my application specific configuration files like properties files,xml files in Weblogic 10.3,so that the weblogic can pick it up?.In Weblogic 8.1,we used to keep the files under <BEA_DOMAIN_HOME>.Thanks.
-
OCI version 10.1.0.2.0 is not supported in Toad
I have upgraded my 9203 Oracle database to 10.1.0.2. Now when I connect to the database via TOAD 7.6, it gives me the following error: "OCI version 10.1.0.2.0 is not supported" Can some one let me know about how to solve this problem. Thanks in Advan
-
Hi all, Is there anybody wants to send a copy of draft business process SD in power point from the project to present to the client ? because i need it for collect the material and some idea. I would like to prepare it with my owm slide. you may send