Pooled Connections and JNDI

Wondering where to find some sample code for using OracleConnectionPoolDataSource and register with JNDI.
Thanks in advance,
Michael

I think you can try this book.
Proffesional Java Server Programming - Wrox Publication.

Similar Messages

  • When Are Pooled Connections Freed?

    Hi,
    If I get a connection from a connection-pool while in a transaction, and if I never
    explicitly free the connection via the connection.close() method, will the connection
    ever be returned to the pool?
    If I have a thread that starts a transaction, gets a pooled connection, and ends
    the transaction without closing the connection, will or can the same thread get the
    same connection when it again starts another transaction and starts the cycle all
    over?
    Thanks,
    Mark

    Mark Glatzer wrote:
    Joseph,
    We are inside a transaction, but the connection is from a non-transaction data
    source. It is our practice to always close the connection as soon as we are done
    with it. However, we forgot to close the connection in one place in the code.
    MarkOk. For non-transactional data sources you are on your own, and should
    definitely close them in a finally block so it gets back into the pool for sure.
    Depending on the server version, there may be an RMI-related reference
    to the connection which prevents it from being gc'ed and returned to the pool.
    If you use the pool driver directly, the gc stuff will work.
    >
    >
    Joseph Weinstein <[email protected]> wrote:
    Hi. How are you obtaining your connection? If it's from a TxDataSource,
    and if
    the transaction is in-progress, and maintained by our transaction manager,
    then
    we will close the connection and return it to the pool when the tx ends,
    whether
    you're done or not. It is good practice nevertheless, to close all JDBC
    objects
    as soon as possible.
    Mark Glatzer wrote:
    Hi,
    If I get a connection from a connection-pool while in a transaction,and if I never
    explicitly free the connection via the connection.close() method, willthe connection
    ever be returned to the pool?
    If I have a thread that starts a transaction, gets a pooled connection,and ends
    the transaction without closing the connection, will or can the same threadget the
    same connection when it again starts another transaction and starts thecycle all
    over?
    Thanks,
    Mark

  • Problem with creating Connection pool and JNDI, driver is not detected

    Hi,
    I have an issue with creating Connection Pool and JNDI.
    I'm using:
    - JDK 1.6
    - OS: Linux(ubuntu 8.10)
    - Netbeans IDE 6.5.1
    - Java EE 5.0
    - Apache Tomcat 6.0.18 Its lib directory contains all necessary jar files for Oracle database driver
    - Oracle 11g Enterprise
    My problem is that the Oracle database driver is not detected when I want to create a pool (it works pretty well and is detected without any problem when I create ordinary connection by DriverManager)
    Therefore after running:
    InitialContext ic = new InitialContext();
    Context context = (Context)ic.lookup("java:comp/env");
    DataSource dataSource = (DataSource)context.lookup("jdbc/oracle11g");
    Connection connection = dataSource.getConnection();and right after dataSource.getConnection() I have the following exception:
    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.OracleDriver'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    at servlets.Servlet1.doPost(Servlet1.java:47)
    at servlets.Servlet1.doGet(Servlet1.java:29)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    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:191)
    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:845)
    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:619)
    Caused by: java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130)
    ... 17 more
    My application context file (context.xml) is:
    <?xml version="1.0" encoding="UTF-8"?>
    <Context path="/WebApplication3">
      <Resource auth="Container"
                      driverClassName="oracle.jdbc.OracleDriver"
                      maxActive="8"
                      maxIdle="4"
                      name="jdbc/oracle11g"
                      username="scott"
                      password="tiger"
                      type="javax.sql.DataSource"
                      url="jdbc:oracle:thin:@localhost:1521:database01" />
    </Context>and my web.xml is:
        <resource-ref>
            <description>Oracle Datasource example</description>
            <res-ref-name>jdbc/oracle11g</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
        </resource-ref>
    ...I found similar threads in different forums including sun, such as
    http://forums.sun.com/thread.jspa?threadID=567630&start=0&tstart=0
    http://forums.sun.com/thread.jspa?threadID=639243&tstart=0
    http://forums.sun.com/thread.jspa?threadID=5312178&tstart=0
    , but no solution.
    As many suggest, I also tried to put context directly in the server.xml (instead of my application context) and referencing it by <ResourceLink /> inside my application context but it didn't work and instead it gave me the following message:
    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '   ' for connect URL 'null'
    Has anyone succeeded in creating a connection pool with JNDI by using Tomcat 6 or higher ? If yes, could kindly explain about the applied method.
    Regards,

    Hello again,
    Finally I managed to run my application also with Tomcat 6.0.18. There was only two lines that had to be modified
    in the context.xml file (the context of my application project and not server's)
    Instead of writing
    <Context antiJARLocking="true" path="/WebApplication2">
        type="javax.sql.DataSource"
        factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
    </Context>we had to write:
    <Context antiJARLocking="true" path="/WebApplication2">
        type="oracle.jdbc.pool.OracleDataSource"
        factory="oracle.jdbc.pool.OracleDataSourceFactory"
    </Context>- No modification was needed to be done at server level (niether server.xml nor server context.xml)
    - I just added the ojdbc6.jar in $CATALINA_HOME/lib (I didn't even need to add it in WEB-INF/lib of my project)
    - The servlet used to do the test was the same that I presented in my precedent post.
    For those who have encountered my problem and are interested in the format of the web.xml and context.xml
    with Tomcat 6.0, you can find them below:
    Oracle server: Oracle 11g Enterprise
    Tomcat server version: 6.0.18
    Oracle driver: ojdbc.jar
    IDE: Netbeans 6.5.1
    The context.xml file of the web application
    <?xml version="1.0" encoding="UTF-8"?>
    <Context antiJARLocking="true" path="/WebApplication2">
        <Resource name="jdbc/oracle11g"
                  type="oracle.jdbc.pool.OracleDataSource"
                  factory="oracle.jdbc.pool.OracleDataSourceFactory"
                  url="jdbc:oracle:thin:@localhost:1521:database01"
                  driverClassName="oracle.jdbc.OracleDriver"
                  userName="scott"
                  password="tiger"
                  auth="Container"
                  maxActive="100"
                  maxIdle="30"
                  maxWait="10000"
                  logAbandoned="true"
                  removeAbandoned="true"
                  removeAbandonedTimeout="60" />
    </Context>The web.xml of my web application
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <resource-ref>
            <description>Oracle Database 11g DataSource</description>
            <res-type>oracle.jdbc.pool.OracleDataSource</res-type>
            <res-auth>Container</res-auth>
            <res-ref-name>jdbc/oracle11g</res-ref-name>
        </resource-ref>
        <servlet>
            <servlet-name>Servlet1</servlet-name>
            <servlet-class>servlets.Servlet1</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>Servlet1</servlet-name>
            <url-pattern>/Servlet1</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>Ok, now I'm happy as the original problem is completely solved
    Regards

  • Getting Pooled Connection with username and password

    hi,
    I am facing problems in getting pooled connections to MYSQL
    database.I am using Tomcat server.
    I tried the example given in Tomcat doc "JNDI how to", it
    works fine with one set of username and password which is
    given in server.xml. Now can anybody guide me thru the steps
    to get pooled connections to the same database with multiple
    username and passwords.
    Thankyou all in advance

    Now can anybody guide me thru the steps to get pooled
    connections to the same database with multiple
    username and passwords.Nope. Can't be done -- at least not that I've seen yet.
    Database/JDBC driver vendors seem unconcerned, or don't
    care about this scenario. I ragged on Informix years
    ago for this very feature. It should would make database
    admins jobs a lot easier if they could know "who" that
    connection belonged to that is running the outrageous
    SQL query without having to divine it by way of tracing
    socket/IP connections back thru the network to some machine.
    The only way I've seen to do it is to create your own
    connection pool code that handles user/password connections.
    -- but then the problem becomes you have a collection of
    mini-pools for each user. i.e. if you have 200 users, you
    end up with 200 connection pools with a couple/few connections
    in each sub-pool. Kinda defeats the purpse.
    So, apparently, everybody just deals with the single
    "generic" user/password connection pool.

  • SharePoint - Error_1_Error occurred in deployment step 'Add Solution': Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was rea

    Hi,
    I am Shanmugavel, SharePoint developer, 
    I am facing the below SharePoint 2013 deployment issue while deploying using VS2012.
    If i will deploy the same wsp or existing wsp
    (last build) using direct powershell deployment, the solution adding properly, but the same timeout exception coming while activation the features.  Please find the below error.
    I tried the below activists:
    1. Restarted my dev server, DB server. 
    2. tried the same solution id different server
    3. tried existing wsp file (last build version)
    4. Deactivated all the features, including project Active deployment configuration.... but still i am facing the same issue.
    I hope this is not coding level issue, because still my code is not start running, before that some problem coming.
    Please help me any one.....  Last two days i am struck because of this...

    What you need to understand is the installation of a WSP does not do much. It just makes sure that you relevant solution files are deployed to the SharePoint farm.
    Next comes the point when you activate the features. It is when the code which you have written to "Activate" certain features for your custom solution.
    Regarding the error you are getting, it typically means that you have more connections (default is I guess 100) open for a SQL database then you are allowed to.
    If you have a custom database and you are opening a connection, make sure you close it as well.
    Look at the similar discussion here:
    The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool
    size was reached[^]
    I would suggest further to look at the
    ULS logs[^] to get better insight.
    Manas Bhardwaj's Stream : www.manasbhardwaj.net

  • BAM Connection in 12C -  Failed to establish a connection to localhost at port 7004.Please verify the Bam server host and JNDI port.

    Hi,
    BAM server is running on 7004 in our local system.
    We need o connect to BAM server from OSB service.
    We tried to use the BAM adapter in the pipeline in 12c, We received Failed to establish a connection to localhost at port 7004.Please verify the Bam server host and JNDI port.
    Please let us know the resolution to this issue.
    Also please provide some links/steps to connect from OSB service to BAM server in 12c.
    Thanks,

    In BAM 12c, you can send data via JMS by configuring an EMS in BAM using the "self-described" payload. Make sure the date formats match correctly. You can configure an error queue which will show you any data parsing problems.
    For example,
    <msgRoot dataObjectName="Student" operationType="insert" keys="RequestId">
       <RequestId>R1000</RequestId>
       <StudentId>S12345</StudentId>
       <RequestType>Admission</RequestType>
       <RequestStatus>Open</RequestStatus>
       <RequestMessage>Please Admin</RequestMessage>
       <RequestCode>3</RequestCode>
       <SubmitTime>2015-03-17 18:23:07</SubmitTime>
       <ApprovalTime>2015-02-18 18:23:07</ApprovalTime>
    </msgRoot>

  • Closing pooled connections?? one at a time?

    I've got an interesting need;
    I've writen a custom UserManager for form based authentication.
    class ValidateLoginManager extends AbstractUserManager
    Authentication is to a legacy DB (Oracle) where all users have
    been added as
    Oracle users. So I've created a separate JNDI data source in
    data-sources.xml
    for pooling connections that I'll only use for authentication
    (just a gut decission).
    The container calls:
    boolean checkPasswd (username, passwd) {
    boolean authenticated = false;
    try {
    dbConnection = this.datasource.getConnection(username,
    passwd);
    authenticated = true;
    } finally {
    if (dbConnection != null)
    dbConnection.close();
    return authenticated;
    This works great, since Oracle authenticates the connection
    against it's user DB.
    But the conn.close() does not close the session on the DB and
    soon all MTS tasks are used up in idle sessions.
    Any thoughts on forcing the connection to drop open sessions?
    thanks, curt

    Hi Curt,
    For my custom usermanager I use a datasource specified in my data-sources.xml like this:
    <data-source
         class="com.evermind.sql.DriverManagerDataSource"
         name="xyz"
         location="jdbc/OracleSecurityDS"
         xa-location="jdbc/xa/OracleXADS"
         ejb-location="jdbc/OracleDS"
         connection-driver="oracle.jdbc.driver.OracleDriver"
         url="jdbc:oracle:thin:@127.0.0.0:1521:xyz"
         inactivity-timeout="30"
    />
    When you lookup the datasource using JNDI, make sure you use the name bound to the location specified in the "location" attribute and not the "ejb-location" attribute (as you usually do in your Ejbs).
    I hope this helps.
    - nik.
    I've got an interesting need;
    I've writen a custom UserManager for form based authentication.
    class ValidateLoginManager extends AbstractUserManager
    Authentication is to a legacy DB (Oracle) where all users have
    been added as
    Oracle users. So I've created a separate JNDI data source in
    data-sources.xml
    for pooling connections that I'll only use for authentication
    (just a gut decission).
    The container calls:
    boolean checkPasswd (username, passwd) {
    boolean authenticated = false;
    try {
    dbConnection = this.datasource.getConnection(username,
    passwd);
    authenticated = true;
    } finally {
    if (dbConnection != null)
    dbConnection.close();
    return authenticated;
    This works great, since Oracle authenticates the connection
    against it's user DB.
    But the conn.close() does not close the session on the DB and
    soon all MTS tasks are used up in idle sessions.
    Any thoughts on forcing the connection to drop open sessions?
    thanks, curt

  • File Adapter creating huge connections and not releasing.

    Hi,
    We see high no. of current connections in file adapter from weblogic console against eis/HAFileAdapter under deployments -> fileadapter -> monitoring -> Outbound Connection Pools and are concerned about the same. It seems like fileadapter is not releasing the connection and hence no. of connections are piling up over a days and depending upon the transactions. coz after a restart the values comes down from 36000 to 10 ( which is default initial connection).
    But when i see at the datasource level i don't see that much number of active connections. Need to know why this is happening and is this behavior is expected?
    We are using SOA 11g PS2
    Below is the deployment plan for fileadpater in use:
    <?xml version='1.0' encoding='UTF-8'?>
    <deployment-plan xmlns="http://xmlns.oracle.com/weblogic/deployment-plan" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/deployment-plan http://xmlns.oracle.com/weblogic/deployment-plan/1.0/deployment-plan.xsd" global-variables="false">
    <application-name>connectors</application-name>
    <variable-definition>
    <variable>
    <name>ConfigProperty_controlDir_Value_12732617703910</name>
    <value>/var/opt/soa_nfs/data/SOA_PRD_DOMAIN/config/FileAdapter</value>
    </variable>
    <variable>
    <name>ConfigProperty_outboundLockTypeForWrite_Value_12737938820080</name>
    <value>oracle</value>
    </variable>
    <variable>
    <name>ConnectionInstance_eis/HAFileAdapter1_JNDIName_13010279387490</name>
    <value>eis/HAFileAdapter1</value>
    </variable>
    <variable>
    <name>ConfigProperty_controlDir_Value_13010283495591</name>
    <value>/var/opt/soa_nfs/data/SOA_PRD_DOMAIN/config/FileAdapter</value>
    </variable>
    <variable>
    <name>ConfigProperty_inboundDataSource_Value_13010283655032</name>
    <value>jdbc/SOADataSource</value>
    </variable>
    <variable>
    <name>ConfigProperty_outboundDataSource_Value_13010283782973</name>
    <value>jdbc/SOADataSource</value>
    </variable>
    <variable>
    <name>ConfigProperty_outboundDataSourceLocal_Value_13010283877514</name>
    <value>jdbc/SOALocalTxDataSource</value>
    </variable>
    <variable>
    <name>ConfigProperty_outboundLockTypeForWrite_Value_13010283941445</name>
    <value>oracle</value>
    </variable>
    <variable>
    <name>ConfigProperty_inboundDataSource_Value_13081683627140</name>
    <value>jdbc/SOADataSource</value>
    </variable>
    <variable>
    <name>ConfigProperty_outboundDataSource_Value_13081683875571</name>
    <value>jdbc/SOADataSource</value>
    </variable>
    <variable>
    <name>ConfigProperty_outboundDataSourceLocal_Value_13081684137432</name>
    <value>jdbc/SOALocalTxDataSource</value>
    </variable>
    <variable>
    <name>ConnectionInstance_eis/HAFileAdapter_Wedb_JNDIName_13369118887880</name>
    <value>eis/HAFileAdapter_Wedb</value>
    </variable>
    <variable>
    <name>ConfigProperty_controlDir_Value_13369119117411</name>
    <value>/var/opt/soa_nfs/data/SOA_PRD_DOMAIN/config/FileAdapter</value>
    </variable>
    <variable>
    <name>ConfigProperty_inboundDataSource_Value_13369119237302</name>
    <value>jdbc/SOADataSource</value>
    </variable>
    <variable>
    <name>ConfigProperty_outboundDataSource_Value_13369119486683</name>
    <value>jdbc/SOADataSource</value>
    </variable>
    <variable>
    <name>ConfigProperty_outboundDataSourceLocal_Value_13369119703484</name>
    <value>jdbc/SOALocalTxDataSource</value>
    </variable>
    <variable>
    <name>ConfigProperty_outboundLockTypeForWrite_Value_13369119820485</name>
    <value>oracle</value>
    </variable>
    </variable-definition>
    <module-override>
    <module-name>FileAdapter.rar</module-name>
    <module-type>rar</module-type>
    <module-descriptor external="false">
    <root-element>weblogic-connector</root-element>
    <uri>META-INF/weblogic-ra.xml</uri>
    <variable-assignment>
    <name>ConfigProperty_controlDir_Value_12732617703910</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter"]/connection-properties/properties/property/[name="controlDir"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_outboundLockTypeForWrite_Value_12737938820080</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter"]/connection-properties/properties/property/[name="outboundLockTypeForWrite"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConnectionInstance_eis/HAFileAdapter1_JNDIName_13010279387490</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter1"]/jndi-name</xpath>
    <origin>planbased</origin>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_controlDir_Value_13010283495591</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter1"]/connection-properties/properties/property/[name="controlDir"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_inboundDataSource_Value_13010283655032</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter1"]/connection-properties/properties/property/[name="inboundDataSource"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_outboundDataSource_Value_13010283782973</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter1"]/connection-properties/properties/property/[name="outboundDataSource"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_outboundDataSourceLocal_Value_13010283877514</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter1"]/connection-properties/properties/property/[name="outboundDataSourceLocal"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_outboundLockTypeForWrite_Value_13010283941445</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter1"]/connection-properties/properties/property/[name="outboundLockTypeForWrite"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_inboundDataSource_Value_13081683627140</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter"]/connection-properties/properties/property/[name="inboundDataSource"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_outboundDataSource_Value_13081683875571</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter"]/connection-properties/properties/property/[name="outboundDataSource"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_outboundDataSourceLocal_Value_13081684137432</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter"]/connection-properties/properties/property/[name="outboundDataSourceLocal"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConnectionInstance_eis/HAFileAdapter_Wedb_JNDIName_13369118887880</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter_Wedb"]/jndi-name</xpath>
    <origin>planbased</origin>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_controlDir_Value_13369119117411</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter_Wedb"]/connection-properties/properties/property/[name="controlDir"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_inboundDataSource_Value_13369119237302</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter_Wedb"]/connection-properties/properties/property/[name="inboundDataSource"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_outboundDataSource_Value_13369119486683</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter_Wedb"]/connection-properties/properties/property/[name="outboundDataSource"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_outboundDataSourceLocal_Value_13369119703484</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter_Wedb"]/connection-properties/properties/property/[name="outboundDataSourceLocal"]/value</xpath>
    </variable-assignment>
    <variable-assignment>
    <name>ConfigProperty_outboundLockTypeForWrite_Value_13369119820485</name>
    <xpath>/weblogic-connector/outbound-resource-adapter/connection-definition-group/[connection-factory-interface="javax.resource.cci.ConnectionFactory"]/connection-instance/[jndi-name="eis/HAFileAdapter_Wedb"]/connection-properties/properties/property/[name="outboundLockTypeForWrite"]/value</xpath>
    </variable-assignment>
    </module-descriptor>
    <module-descriptor external="false">
    <root-element>connector</root-element>
    <uri>META-INF/ra.xml</uri>
    </module-descriptor>
    <module-descriptor external="true">
    <root-element>wldf-resource</root-element>
    <uri>META-INF/weblogic-diagnostics.xml</uri>
    </module-descriptor>
    </module-override>
    <config-root>/opt/soauser/products/soa11.1/Oracle_SOA1/soa/connectors/plan</config-root>
    </deployment-plan>
    -Rohit

    Hi Arik,
    To answer your questions :
    You are using HAFileAdapter in your processes JNDI defenitions? --Yes
    Check in your HAFileAdapter Connection Pool if Shrinking Enabled is set to true. --Its set to true
    I would recomend also to change the properties Test Connections On Reserve to true, and Test Frequency Seconds(900 is the default). --These properties are also in place
    -Rohit

  • Connections and transactions

    Hi all,
    I need advice on managing transactions across multiple persistent objects. Currently we have a number of objects that can save their state to the database: they open a connection, perform insert/update, then close the connection:
    class PersistentObject
    public void store()
    // get connection from pool
    Connection conn = ConnectionMgr.getConnection();
    // do insert/update
    // Return connection to pool
    conn.close();
    We are using Tomcat's built-in connection pool, so ConnectionMgr simply encapsulates the JNDI lookup followed by a call to DataSource.getConnection().
    Now we need to be able to store two or more objects in one transaction, something like this:
    try {
    // begin transaction
    object1.store();
    object2.store();
    // commit
    } catch( SQLException ex ) {
    // rollback
    Problem is that a transaction requires multiple SQL calls to use the same Connection.One way to do this, of course, is to open the connection externally and pass it to each object. However, ideally, it should be more implicit. Ideally, if the transaction is in progress when object2 tries to get connection, it should receive the same one that object1 used. Is there any way to do it? (Well, I can think of one: binding a connection to a session, but I also see a number of disadvatages of that approach).
    thanks in advace,
    CodeSlinger

    this is what i know. Can you not use JTS? With weblogic app server you can use the weblogic.jdbc.jts.Driver to get a connection. Then you can start a transaction and have calls to multiple components say A, B and C. Each component closes the connection when done but the next component gets the same connection if in same execute thread. The connection is returned to pool only when you commit/rollback and all components are in the same transaction. I hope this helps. You should have similar thing with Tomcat.

  • NPE when using pooled connection

    Hello. I have a client application connecting to an OC4J server running on a different machine. The OC4J server maintains a pool of connections to the Oracle database. My client is able to get the datasource from the server via jndi, and gets a non-null connection from the datasource. However, when I try to create a statement using the connection, I get a Null Pointer Exception. If I get a non-pooled connection from the datasource, everything works fine.
    Here is the client code:
    javax.naming.Context ic = getInitialContext();
    javax.sql.DataSource dataSource = (javax.sql.DataSource)ic.lookup("jdbc/nanookDS"); //this gives you pooling
    // javax.sql.DataSource dataSource = (javax.sql.DataSource)ic.lookup("jdbc/nanookCoreDS"); //this does not
    for (int x=0; x<100; x++)
    Connection conn = dataSource.getConnection();
    if (conn == null)
    System.out.println("null");
    Statement stmt = conn.createStatement(); //fails here
    ResultSet rs = stmt.executeQuery("select * from pmi.patient where patient# = 0");
    rs.close();
    stmt.close();
    conn.close();
    Can someone please tell me what's happening? I'm pulling my hair out...
    BTW, the code above works fine when executed in a JSP on the OC4J server.
    Thank you,
    Brian Brown

    import javax.naming.*;
    import java.util.*;
    import javax.sql.*;
    import java.sql.*;
    public class Lookup {
    public static void main(String arg[]) throws Exception {
    Properties props = new Properties();
    props.put(Context.INITIAL_CONTEXT_FACTORY,"com.evermind.server.rmi.RMIInitialContextFactory");
    props.put(Context.PROVIDER_URL, "ormi://localhost:23791");
    props.put(Context.SECURITY_PRINCIPAL, "admin");
    props.put(Context.SECURITY_CREDENTIALS, "welcome");
    InitialContext ic = new InitialContext(props);
    Lookup l = new Lookup();
    l.testConn ( ( (DataSource) ic.lookup("jdbc/OracleCoreDS") ).getConnection( ) );
    l.testConn( ( (DataSource) ic.lookup("jdbc/pool/OraclePoolDS") ).getConnection( ));
    l.testConn ( ( (DataSource) ic.lookup("jdbc/OracleDS")).getConnection( ));
    public void testConn( Connection conn ) throws Exception {
    Statement s = conn.createStatement( );
    ResultSet r = s.executeQuery(" Select 'Passed' from dual ");
    if( r.next() )
    System.out.println( r.getString(1) );
    else
    System.out.println( "Failed" );
    r.close();
    s.close();
    conn.close();
    Add oc4j.jar and classes12.jar to CLASSPATH.
    Elango.

  • How to pool connections to OID?

    I am using oracle.ldap.util.jndi.ConnectionUtil to create context objects and could not find any information on how to pool connections using the oracle's API.
    Any help will be highly appreciated.
    -Ram

    For info, I raised an SR on this and it seems the bug was fixed in OVD v11.1.1.4.

  • Failure in ORACLE POOL connection

    Hi friends,
    I have worked as a developer, My platform front-end is .net and back end is oracle, this product live chat, My problem is I have receive a problem from server that’s is, mysql POOL connection is automatically cut from the connection, I have try to fix that bug but unexpectedly I cannot fix that, Anybody say some suggestion about that.
    Thanks in advance for your help.
    Regards,
    Gilbertsavier.
    Live chat By mioot

    You missed the following
    1. Oracle Version
    2. OS
    3. Error Number
    4. Error Message
    Please Fill the above details.
    Regards,

  • Connection and Resultset opening and closing!!!

    Hi Friends,
    I have a query that returns results like this:
    col1**********col2********col3*******col4
    xx----------------        -----------yy------------zz
    xx----------------        -----------yy------------zz
    xx----------------        -----------yy------------zz
    ....I store these rows and columns in a array and close the resultset that returned me the first query.Now to get column 2 values,I run again a query which takes in col1,col3 and col4 values as parameters.So if the first query return 1000 rows,i got to run 1000 queries.So,I open a new connection each time and close that after it returns the result for each row,i.e i do this for 1000 tiimes.It gives me back the results but delays are increasing as rows increases.Is this a feasible way?Or do i've to have a single connection open,intil i get all the 1000 rows??But i think i can't run 2 resultsets at one time,please help me i'm pretty confused.
    Thanks

    Thanks Duffymo,
    I am already using Tomcat's db connection pooling,Excellent.
    and
    I guess I knw enough SQL to run this program...Sorry, no insult intended. I can't tell how versed someone is in SQL when I read the question. I'll confess that I don't consider myself an expert. My first thought would be to consult one if I knew one.
    However, I do know that excessive network roundtrips are usually the kiss of death for Java/DB interactions.
    Maybe a stored proc is a better way to go. If your logic is that complex, and can't be reduced to a JOIN, then I'd write it in a stored proc and let the database do the work, returning the result in one roundtrip.
    %

  • Problem with OpenLDAP and JNDI

    I'm having problem working with OpenLDAP and JNDI.
    First I have changed LDAP's slapd.conf file:
    suffix          "dc=antipodes,dc=com"
    rootdn          cn=Manager,dc=antipodes,dc=com
    directory     "C:/Program Files/OpenLDAP/data"
    rootpw          secret
    schemacheck offthan i used code below, to create root context:
    package test;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.naming.NameAlreadyBoundException;
    import javax.naming.directory.*;
    import java.util.*;
    public class MakeRoot {
         final static String ldapServerName = "localhost";
         final static String rootdn = "cn=Manager,dc=antipodes,dc=com";
         final static String rootpass = "secret";
         final static String rootContext = "dc=antipodes,dc=com";
         public static void main( String[] args ) {
                   // set up environment to access the server
                   Properties env = new Properties();
                   env.put( Context.INITIAL_CONTEXT_FACTORY,
                              "com.sun.jndi.ldap.LdapCtxFactory" );
                   env.put( Context.PROVIDER_URL, "ldap://" + ldapServerName + "/" );
                   env.put( Context.SECURITY_PRINCIPAL, rootdn );
                   env.put( Context.SECURITY_CREDENTIALS, rootpass );
                   try {
                             // obtain initial directory context using the environment
                             DirContext ctx = new InitialDirContext( env );
                             // now, create the root context, which is just a subcontext
                             // of this initial directory context.
                             ctx.createSubcontext( rootContext );
                   } catch ( NameAlreadyBoundException nabe ) {
                             System.err.println( rootContext + " has already been bound!" );
                   } catch ( Exception e ) {
                             System.err.println( e );
    }this worked fine, I could see that by using "LDAP Browser/Editor".
    and then I tried to create group with code:
    package test;
    import java.util.Hashtable;
    import javax.naming.*;
    import javax.naming.ldap.*;
    import javax.naming.directory.*;
    public class MakeGroup
         public static void main (String[] args)
              Hashtable env = new Hashtable();
              String adminName = "cn=Manager,dc=antipodes,dc=com";
              String adminPassword = "secret";
              String ldapURL = "ldap://127.0.0.1:389";
              String groupName = "CN=Evolution,OU=Research,DC=antipodes,DC=com";
              env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
              //set security credentials, note using simple cleartext authentication
              env.put(Context.SECURITY_AUTHENTICATION,"simple");
              env.put(Context.SECURITY_PRINCIPAL,adminName);
              env.put(Context.SECURITY_CREDENTIALS,adminPassword);
              //connect to my domain controller
              env.put(Context.PROVIDER_URL,ldapURL);
              try {
                   // Create the initial directory context
                   LdapContext ctx = new InitialLdapContext(env,null);
                   // Create attributes to be associated with the new group
                        Attributes attrs = new BasicAttributes(true);
                   attrs.put("objectClass","group");
                   attrs.put("samAccountName","Evolution");
                   attrs.put("cn","Evolution");
                   attrs.put("description","Evolutionary Theorists");
                   //group types from IAds.h
                   int ADS_GROUP_TYPE_GLOBAL_GROUP = 0x0002;
                   int ADS_GROUP_TYPE_DOMAIN_LOCAL_GROUP = 0x0004;
                   int ADS_GROUP_TYPE_LOCAL_GROUP = 0x0004;
                   int ADS_GROUP_TYPE_UNIVERSAL_GROUP = 0x0008;
                   int ADS_GROUP_TYPE_SECURITY_ENABLED = 0x80000000;
                   attrs.put("groupType",Integer.toString(ADS_GROUP_TYPE_UNIVERSAL_GROUP + ADS_GROUP_TYPE_SECURITY_ENABLED));
                   // Create the context
                   Context result = ctx.createSubcontext(groupName, attrs);
                   System.out.println("Created group: " + groupName);
                   ctx.close();
              catch (NamingException e) {
                   System.err.println("Problem creating group: " + e);
    }got the error code: Problem creating group: javax.naming.directory.InvalidAttributeIdentifierException: [LDAP: error code 17 - groupType: attribute type undefined]; remaining name 'CN=Evolution,OU=Research,DC=antipodes,DC=com'
    I tried by creating organizational unit "ou=Research" from "LDAP Browser/Editor", and then running the same code -> same error.
    also I have tried code for adding users:
    package test;
    import java.util.Hashtable;
    import javax.naming.ldap.*;
    import javax.naming.directory.*;
    import javax.naming.*;
    import javax.net.ssl.*;
    import java.io.*;
    public class MakeUser
         public static void main (String[] args)
              Hashtable env = new Hashtable();
              String adminName = "cn=Manager,dc=antipodes,dc=com";
              String adminPassword = "secret";
              String userName = "cn=Albert Einstein,ou=Research,dc=antipodes,dc=com";
              String groupName = "cn=All Research,ou=Research,dc=antipodes,dc=com";
              env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
              //set security credentials, note using simple cleartext authentication
              env.put(Context.SECURITY_AUTHENTICATION,"simple");
              env.put(Context.SECURITY_PRINCIPAL,adminName);
              env.put(Context.SECURITY_CREDENTIALS,adminPassword);
              //connect to my domain controller
              env.put(Context.PROVIDER_URL, "ldap://127.0.0.1:389");
              try {
                   // Create the initial directory context
                   LdapContext ctx = new InitialLdapContext(env,null);
                   // Create attributes to be associated with the new user
                        Attributes attrs = new BasicAttributes(true);
                   //These are the mandatory attributes for a user object
                   //Note that Win2K3 will automagically create a random
                   //samAccountName if it is not present. (Win2K does not)
                   attrs.put("objectClass","user");
                        attrs.put("samAccountName","AlbertE");
                   attrs.put("cn","Albert Einstein");
                   //These are some optional (but useful) attributes
                   attrs.put("giveName","Albert");
                   attrs.put("sn","Einstein");
                   attrs.put("displayName","Albert Einstein");
                   attrs.put("description","Research Scientist");
                        attrs.put("userPrincipalName","[email protected]");
                        attrs.put("mail","[email protected]");
                   attrs.put("telephoneNumber","999 123 4567");
                   //some useful constants from lmaccess.h
                   int UF_ACCOUNTDISABLE = 0x0002;
                   int UF_PASSWD_NOTREQD = 0x0020;
                   int UF_PASSWD_CANT_CHANGE = 0x0040;
                   int UF_NORMAL_ACCOUNT = 0x0200;
                   int UF_DONT_EXPIRE_PASSWD = 0x10000;
                   int UF_PASSWORD_EXPIRED = 0x800000;
                   //Note that you need to create the user object before you can
                   //set the password. Therefore as the user is created with no
                   //password, user AccountControl must be set to the following
                   //otherwise the Win2K3 password filter will return error 53
                   //unwilling to perform.
                        attrs.put("userAccountControl",Integer.toString(UF_NORMAL_ACCOUNT + UF_PASSWD_NOTREQD + UF_PASSWORD_EXPIRED+ UF_ACCOUNTDISABLE));
                   // Create the context
                   Context result = ctx.createSubcontext(userName, attrs);
                   System.out.println("Created disabled account for: " + userName);
                   //now that we've created the user object, we can set the
                   //password and change the userAccountControl
                   //and because password can only be set using SSL/TLS
                   //lets use StartTLS
                   StartTlsResponse tls = (StartTlsResponse)ctx.extendedOperation(new StartTlsRequest());
                   tls.negotiate();
                   //set password is a ldap modfy operation
                   //and we'll update the userAccountControl
                   //enabling the acount and force the user to update ther password
                   //the first time they login
                   ModificationItem[] mods = new ModificationItem[2];
                   //Replace the "unicdodePwd" attribute with a new value
                   //Password must be both Unicode and a quoted string
                   String newQuotedPassword = "\"Password2000\"";
                   byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");
                   mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("unicodePwd", newUnicodePassword));
                   mods[1] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("userAccountControl",Integer.toString(UF_NORMAL_ACCOUNT + UF_PASSWORD_EXPIRED)));
                   // Perform the update
                   ctx.modifyAttributes(userName, mods);
                   System.out.println("Set password & updated userccountControl");
                   //now add the user to a group.
                        try     {
                             ModificationItem member[] = new ModificationItem[1];
                             member[0]= new ModificationItem(DirContext.ADD_ATTRIBUTE, new BasicAttribute("member", userName));
                             ctx.modifyAttributes(groupName,member);
                             System.out.println("Added user to group: " + groupName);
                        catch (NamingException e) {
                              System.err.println("Problem adding user to group: " + e);
                   //Could have put tls.close()  prior to the group modification
                   //but it seems to screw up the connection  or context ?
                   tls.close();
                   ctx.close();
                   System.out.println("Successfully created User: " + userName);
              catch (NamingException e) {
                   System.err.println("Problem creating object: " + e);
              catch (IOException e) {
                   System.err.println("Problem creating object: " + e);               }
    }same error.
    I haven't done any chages to any schema manually.
    I know I'm missing something crucial but have no idea what. I have tried many other code from tutorials from net, but they are all very similar and throwing the same error I showed above.
    thanks in advance for help.

    I've solved this.
    The problem was that all codes were using classes from Microsoft Active Directory, and they are not supported in OpenLDAP (microsoft.schema in OpenLDAP is just for info). Due to this some fields are not the same in equivalent classes ("user" and "person").
    so partial code for creating user in root would be:
    import java.util.Hashtable;
    import javax.naming.ldap.*;
    import javax.naming.directory.*;
    import javax.naming.*;
    import javax.net.ssl.*;
    import java.io.*;
    public class MakeUser
         public static void main (String[] args)
              Hashtable env = new Hashtable();
              String adminName = "cn=Manager,dc=antipodes,dc=com";
              String adminPassword = "secret";
              String userName = "cn=Albert Einstein,ou=newgroup,dc=antipodes,dc=com";
              env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
              //set security credentials, note using simple cleartext authentication
              env.put(Context.SECURITY_AUTHENTICATION,"simple");
              env.put(Context.SECURITY_PRINCIPAL,adminName);
              env.put(Context.SECURITY_CREDENTIALS,adminPassword);
              //connect to my domain controller
              env.put(Context.PROVIDER_URL, "ldap://127.0.0.1:389");
              try {
                   // Create the initial directory context
                   LdapContext ctx = new InitialLdapContext(env,null);
                   // Create attributes to be associated with the new user
                        Attributes attrs = new BasicAttributes(true);
                                  attrs.put("objectClass","user");
                   attrs.put("cn","Albert Einstein");
                   attrs.put("userPassword","Nale");
                   attrs.put("sn","Einstein");
                   attrs.put("description","Research Scientist");
                   attrs.put("telephoneNumber","999 123 4567");
                   // Create the context
                   Context result = ctx.createSubcontext(userName, attrs);
                   System.out.println("Successfully created User: " + userName);
              catch (NamingException e) {
                   System.err.println("Problem creating object: " + e);
    }hope this will help anyone.

  • What are the correct parameter names for a JDBC pool connection?

    Looking in the admin console I notice the differences in the properties name (type casting) of PointBasePool and __TimerPool pool connections properties and the create wizard properties.
    PointBasePool and __TimerPool uses this name parameters: User,Password, and DatabaseName.
    Create wizard uses these: databaseName, user, password.
    So, then, what is the standard names for a connection in SOA8? What is the standard for JDBC?
    For example, Tomcat 4 uses username, password, url, driverClassName as parameters names.
    Please help,
    This is getting more and more confising,
    Thanks,
    Lorenzo Jimenez

    The properties that you specify when creating the connection pool are unique to the vendor.
    Any or the properties that you specify user,password, url...etc we expect to have setters (setUser, setPassword, setUrl)
    let me know if need more info

Maybe you are looking for