Friday, December 28, 2012

Deploying OSB code from Eclipse

The following outlines the steps needed to deploy OSB code from Eclipse

1.  Add a new server connection in Eclipse
      a. Go to File -> New -> Server

     b.  Set the Server Type, Server Host Name and Server Name.  The server name is the name of the server that will be displayed in Eclipse

      c.  Set the Server Type and then browse to find the location of the OSB domain that you want to access.  This is usually in $MiddlewareHome/user_projects/domains/<domain>.

      d.  If you have any OSB configuration projects in OSB, you can associate them with this server( We will do this after we create the OSB configuration project in step 2).  Then select Finish.

      2.  Create a new Oracle Service Bus Configuration Project
            a.  Go to File -> New -> Oracle Service Bus Configuration Project

           b.   Fill in information on the Oracle Service Bus Configuration Project and then select Finish.   The session name and description will be used when saving the changes in OSB.

         3.  Link the OSB Configuration project to the server you want to deploy to. 
       a.  Right click on the server in the Servers tab and select  Add and Remove.

      b.   Move the OSB configuration project that you created in step 2 from the Available section to the Configured section and then select Finish.  You want to be careful on how many OSB configuration projects that you associate with the server at one time.  Keep in mind that changes in all of the OSB configuration projects associated with a server will be published when you publish changes to a server.  It is much cleaner and safer to only have one OSB configuration project associated with a server at a time.

      4.  Create new project in the OSB Configuration Project
            a.  You can either create a new project or import a project.

      b.  Make any changes needed to your new or imported project.
5.  Publish Changes
      a.  Right click on the server and select Publish.

Creating a Business Service to Publish to a JMS Queue/Topic

The following steps outline how to create a business service that will publish to a JMS Queue or Topic.  For this example, I created the Business Service in the OSB Console.  You could also use Eclipse and the steps would be very similar.

1.  Log into OSB Console.
2.  Create new project.  For this example I used the project name of PublishJMSQueue.
3.  Create a new folder called BusinessServices to hold the service we are going to create.
4.  Navigate to the BusinessServices folder and select Business Service from the Create Resource menu.

5.  Enter Service Name, select Messaging Service for the Service Type and click on Next.

6.  Select the Request Message Type, Response Message Type and click on Next.  For this example I am using Text for the Request Message Type and None for the Response Message Type.  Below is information on the other types from the Oracle Documentation.

None - Select this option if there is no request message (HTTP GET example)
Binary - Select this option if the content-type of the message is unknown or not important.
Text - Select this option if the message can be restricted to text.
MFL - Select this option if the message is a binary document conforming to an MFL definition. You can configure only one MFL file.
For MFLs, you can click Browse to select an MFL from the MFL Browser, then click Submit.
XML - Select this option if the message is an XML document. To provide some type information, you can choose to declare the XML schema type of the XML document exchanged.

7.  Select jms for Protocol, enter the Endpoint URI for the queue/topic you are publishing to, click on Add and then click on Next.  You can leave everything else with the default values.

Note:  The Endpoing URI follow the format of “jms://host:port(,host:port)*/FactoryJndiName/DestJndiName”.   If you are using a Weblogic queue/topic you do not need to change the FactoryJndiName, OSB will prepopulated the correct JNDI name.  You can get the DestJndiName from the Weblogic console (domain -> Services -> Messaging -> JMS Modules -> <Module Containing the Queue/Topic you are publishing to> -> JNDI Name)

8.  Set Destination Type, Message Type and then click on Last.  Everything else can remain at the default value.  For this example, we are using a queue for destination type and Text for message type.

       9.   Review Settings and then click Save.

     10.  Test Business Service.

Configuring JDeveloper to Work With a Proxy Server

Getting JDeveloper to work with a proxy server can be a little tricky.  Specifically, JDeveloper will use the proxy settings of the Default Web Browser instead of the window's proxy settings.

For this example I used FireFox as my default web browser.  The way FireFox handles proxy exceptions is much cleaner than Chrome/IE.   I found that in Chrome/IE the exceptions could not have a slash “/”.  If you have one of these browsers as your default browser, you will need to adjust the steps for how that browser handles proxy exceptions.

1.  Configure the proxy and exceptions in FireFox.   The exceptions will vary based on what you are trying to do.  Also, it seems that the wild card entries don’t always work.  If you find this to be the case, you will need to add the full URL.
     a.  Go to Tools -> Options in FireFox.
     b.  On the Network tab click on Settings.

     c.  Select Manual Proxy Configuration and enter the correct proxy information.
     d.  Add the URLs that you want to exclude in the “No Proxy for:” section. 

2. Open JDeveloper to verify the proxy settings are not set.  We want to use the settings that we just configured in FireFox. 

    a.  Go to Tools -> Preferences -> Web Browser and Proxy
    b.  Make sure that Use HTTP Proxy Server is not selected.  We want to use the settings in FireFox.

Creating a JCA Database Adapter in JDeveloper

Below is an outline of the steps needed to create a JCA Database Adapter in JDeveloper.  Specifically they focus on how to create a JCA Database Adapter that can be imported into OSB.  If you are creating a database adapter for an existing SOA project then you can start on step 7.

1.  Open JDeveloper
2.  Create a new Generic Application

3.  Enter a name  for the Application.  You can reuse this same application to create any JCA Adapters in the future so name it something generic.  For example “Connections”
4.  Create a SOA Project

5.  Create an Empty Composite

6.   Drag the Database Adapter component from the Component Palette into the External References swim lane.
7.   A wizard will pop up which will guide you through creating the JCA Database Adapter.  There are 11 steps in this wizard. 
                a.  Fill in the Service name and then select Next (Step 2).
                b. Select the appropriate connection.  It will automatically fill in the JNDI Name. (Step 3) 

    c.  Select all of the Operation Types you want.  For this example, we will be able to Insert and Select from a table (Step 4).

    d.  Import all of the tables that you want to operate on.  You can import parent/child tables.  In this example, we only have one table (Step 5).

 e.  Define the primary keys (Step 6)

f.   If you have selected multiple tables.  Define the relationships between the tables. (Step 7)
g.  Exclude any attributes that you do not want to have access to.  (Step 8)

h.  If you only want to look at a subset of data from the table(s), then you can write a query to narrow down the data you will see. (Step 9)

i.  Define Advanced Options.  For most cases you can keep all of the defaults. (Step 10)

j. Click Finish.   This will create all of the files that you need to import this JCA Adapter into OSB.