Oracle ADF on JBoss: Wrapped Jdbc Connection problem

ebirkenes picture ebirkenes · Nov 10, 2008 · Viewed 7.1k times · Source

I'm trying to run an application using Oracle ADF Business Components on a JBoss Server. I've maneged to deploy it, but when I try to load the page I get below exception:

 java.lang.ClassCastException: org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6 cannot be cast to oracle.jdbc.OracleConnection

Is there a way solve this? Maybe configure JBoss to not use this wrapped connection or configure the ADF framework to unwrap it?

Answer

ebirkenes picture ebirkenes · Feb 18, 2009

This is a while back, but I'll just follow up on my own question.

There is a guide on Oracle Metalink (Needs login) wich explains how to deploy ADF/BC on JBoss. I'm pretty sure this is what solved this for me (it's a while ago..)

Here is a copy of it:


Abstract
The purpose of this note is to show how you create an ADF BC Application Module and how you deploy it on a JBoss Application Server. It will also show you what configurations you need to perform on the JBoss side in order for the Application Module to work correctly.

Scope & Application
This note is intended for anyone who is about to deploy an ADF BC Module to a JBoss Application Server.

How To Deploy an ADF BC Module to a JBoss Application Server
The steps necessary for deploying an ADF BC Module to a JBoss Application Server are the following:

  1. Setup the ADF Runtime Libraries on the JBoss Server
  2. Setup data source(s) on the JBoss Server
  3. Configure the ADF BC Module
  4. Deploy the ADF BC Module

I will go through each of these steps more detailed. There is also a complete example attached for download here. Setup the ADF Runtime Libraries on the JBoss Server

  1. Shutdown the Application Server.
  2. Invoke the ADF Runtime Installer wizard. Choose Tools | ADF Runtime Installer, and choose a server type from the submenu.
  3. Proceed through the pages of the wizard. For detailed instructions for any page of the wizard, click Help.
  4. On the Location page, select the home (or root) directory of the server on which the libraries are to be installed.
  5. On the Installation Options page, you may choose the operation that you wish to perform. * Install the ADF runtime libraries from your JDeveloper installation. * Uninstall previously installed ADF runtime libraries. * Restore an archived version of the ADF runtime libraries as the active version.
  6. On the Summary page, click Migrate if you wish to prepare any existing UIX JSP projects for deployment.
  7. On the Summary page, confirm the details of the installation, and click Finish.
  8. Restart the application server.

Setup data source(s) on the JBoss Server
To create an Oracle data source in the JBoss server, you need to take the following steps:

  1. Create a file called oracle-ds.xml. This file will contain your data source configuration. Below is an example on how such a file can look like.

    <?xml version="1.0" encoding="UTF-8"?>
      <datasources>
        <local-tx-datasource>
        <jndi-name>OracleDS</jndi-name>
        <use-java-context>false</use-java-context>
        <connection-url>jdbc:oracle:thin:@mydbhost.com:1521:mysid</connection-url>
        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
        <user-name>hr</user-name>
        <password>******</password>
        <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
      </local-tx-datasource>
    </datasources>
    
  2. Copy the file to the /deploy. This will install it on the JBoss server.

Configure the ADF BC Module
There are a few steps that need to be taken upon the ADF BC Module in order for it to run on the JBoss server.

When creating an ADF BC Module that will be used on a JBoss application server, one needs to set the SQL Flavor to SQL92 and the Type Map to Java. This change is required when using JBoss as the Application Server.

****Package the ADF Business Components project as an EJB session bean.****

  1. Right Click on the Application Module, select Business Components Deployment.
  2. In the profiles Dialog, select EJB Session Beans.
  3. In the EJB Session Beans dialog, select Deploy To: Other EJB Container
  4. In the AppModules dialog, configure the Application Module as seen in the figure 1 below.

Figure 1. Configuration of the Application Module
alt text

Once done, your Project will look similar to the one shown in the figure 2 below.

Figure 2. The JDeveloper Project
alt text

The final step is to configure the Application Module to use the data source we created in the previous step. This is done as follows:

  1. Edit the application module.
  2. In the Navigator, right-click the Business Components application module icon and choose Configurations.
  3. Select the appropriate configuration.
  4. Select this configuration and click Edit.
  5. In the Connection Type list, choose JDBC DataSource.
  6. Enter a DataSource Name. For example: java:/OracleDS.

Deploy the ADF BC Module
If you have your JBoss server either locally or mapped on your local machine, you can deploy it directly from inside JDeveloper. If your JBoss server is remote, and not mapped to the local machine, or you have a JSP application that later will use this module, you cannot deploy it directly from within JDeveloper. Both methods are described below.

Deploying the Module from within JDeveloper
1. Create a connection to the target application server. 2. If you want to support JBoss-specific configuration options for the EJB, add a jboss.xml deployment descriptor file. For more information on this file, see http://www.jboss.org. 3. If your project is a Business Components UIX JSP project, add required Cabo resources to it. 4. Select the deployment profile in the Navigator, right-click, and choose Deploy to | < application server connection> to package the application as an archive file and deploy it via the selected application server connection.

Deploying the Module outside of JDeveloper
If your JBoss server is remote, and not mapped to the local machine, or you have a JSP application that later will use this module you will have to do as follows:

  1. Choose Deploy to EAR file from the context menu to deploy it as an EAR file. You must deploy this application to an EAR file and not a WAR file, as JBoss will not add the EJB references under the java:comp/env/ JNDI namespace for a WAR file.
  2. Copy this file manually to the /deploy directory.