Tag Archives: AIA

Maintaining SOA Suite infrastructure database

While trying to keep my post on purging the BPEL and ESB/Mediator database up to date with the latest documents and experiences, I found these whitepapers and references:

  • SOA 11G Database (pdf) Growth Management Strategy
  • An Oracle SOA 11G installation presents a few challenges for administrators and one of these is managing the growth of the SOA database. The advice facilitates better dialog between SOA and Database administrators when planning and managing database requirements.

  • On Oracle support: SOA 11g Infrastructure Database: Installation, Maintenance and Administration Guide [ID 1384379.1]
  • This document covers everything you need to know about the SOA Infrastructure Database for Oracle SOA Suite 11g. Here we bring together content from sources such as OTN, Product Documentation and our Knowledge Base in an effort to provide you with a single comprehensive resource.

Kscope 11 ADF, AIA and Business Rules

ADF

There are a lot of presentations at Kscope on ADF where it is mentioned that the level of Java knowledge to implement ADF based applications is very limited. The first presentation by Markus Eisele I saw on Monday was an introduction to Java. It was called “All the Java ADF beginners need to know”. In this hour a short history, Java’s characteristics, at a high level the differences between Java EE, Java SE and Java ME were covered as weel as the the basics of the Java language.

The second presentation on ADF this day was by Sten Vesterli. It was titled: “Enterprise Applications with Oracle ADF – Skills, People, and Tools”. Not only did he go into these three aspects he also spend a part of the presentation on the process of developing software applications using ADF. The skills that were mentioned to develop ADF applications:

  • ADF Framework – Programming by exceptions
  • Object Oriented programming
  • Java programming
  • Database programming (Datamodel, PL/SQL, Batch like things)
  • XML – (Reading the Source View)
  • Regular expression
  • Graphical Design
  • Usability

Business Rules

EuroTransplant is one of the SOA Suite customers that uses the Business Rules Engine that comes with it in a production environment. Wilfred van der Deijl showed us from a developers perspective how the tools is used. During the presentation was clear that business goals like “the business must be able to verify the implemented rules” were clearly met.

AIA

Edwin Biemond gave “An Introduction to Application Integration Architecture“. The demo in his presentation helped to demystify the implementation of an AIA integration flow.

ESB: No WebService Provider is registered at this URL

When you are using Oracle ESB 10g and encounter the message No WebService Provider is registered at this URL when testing a web service from the ESB Console try the following:

Oracle Enterprise Manager OC4J_SOA

EM OC4J_SOA

Verify the ESB web service providers are generated correctly in ESB runtime (known as the esb-rt):

  • Login into Enterprise Manager
  • Go to the Application Server Control
  • Click OC4J_SOA oc4j instance
  • Click Web Services tab
  • Verify the deployed web services are listed here, and test that services.

In case there are no web service from the ESB runtime (esb-rt) the service providers were not generated correctly, restart ESB-RT:

  • Click OC4J_SOA oc4j instance
  • Click the Applications tab
  • Expand Middleware Services, ESB and esb-dt
  • Check the esb-rt and click the restart button

Now check the j2ee/_instance_name_/log/*/oc4j/log.xml to see if the ESB application has started correctly. Verify that ESB-RT application is initialized correctly by searching for ‘ESB bootstrap: Runtime initialized‘ message in the log file. If you also restarted the ESB-DT, verify that ESB DT application is initialized correctly by searching for ‘ESB bootstrap: Repository initialized‘ message in the log file. And finally check that the ESB web service providers were generated correct (see above).

Some useful AIA 11g links

For my own reference some useful AIA 11g Foundation Pack references:

Documentation

The AIA 11g Foundation Pack documentation:

Installation

Installing AIA FP (11.1.1.4.0) on SOA Suite 11g R1 PS3 explained by Edwin Biemond on the Whitehorses blog. The Oracle Installation and upgrade guide to go with it can be found here and a whitepaper on installation topologies and architecture.

Blogs on installing previous versions:

Using Composite Application Validation System for non AIA Composites testing

Usings CAVS to test non AIA composites is described by Edwin Biemond.

AIA Service Constructor in JDeveloper 11g PS3

JDeveloper 11g needs extensions to work with SOA Suite / SCA Composites and AIA 3.0 (for example the Service Constructor). An earlier post describes how to use SOA Suite extension in JDeveloper 11g. This post will show you how to install the AIA Service Constructor.

The AIA Service Constructor can be acquired using the menu Help | Check for updates, clicking Next, and selecting Oracle Fusion Middleware Products. SelectAIA Service Constructor and click next to start the download.

Verify the installation of the extension using the menu Help | About, and click on the tab Extensions:

Altering JDeveloper preferences

Now we have to make the aia.jar known to the SOA stuff. In order to do this we use the preferences, using the menu Tools | Preferences.... The is aia.jar in the ...\Middleware\jdeveloper\lib directory.

After these changes JDeveloper needs a restart.

Sharing artifacts using the MDS Repository

Both during development and maintenance of code, deployment strategies relying on copying of artifacts will fail, or at least complicate the task at hand and frustrate reuse. SOA Suite offers a centralized storage for artifacts (like WSDL, XSD, and XSL files) that can be accessed both at design time and at run-time. It is called the MDS Repository, and comes with Metadata Services on top of it. It is part of the SOA Suite and doesn’t require additional installation. This blogpost will show you how to upload an artifact to the central MDS Repository, and how to use the uploaded artifact in your source code.

Locate and copy the WSDL

Locate the WSDL file in your project on the local file system, for example: C:\JDeveloper\mywork\AIApocBOUW\CreateInventoryTransactionRIBRMSProvABCSImpl.wsdl. In which a convention like C:\JDeveloper\mywork\__Workspace__\__project__ is used. You can also determine this path in JDeveloper by selecting the WSDL file and use CRTL-SHIFT-C (or by selecting contextmenu – Copy Path).

Use an FTP tool to move the file to the server running the SOA Suite. The path to use on the server depends on the application, version and component type. Typically in AIA there is a structure like $AIA_HOME/AIAMetaData/AIAComponents/ApplicationConnectorServiceLibrary/__Application__/__version__/__componentType__ . Where in AIA component types are ABCS Provider, ABCS Requestor, EBS, et cetera. In other environments you can create your own structure. Since you no longer need a local copy of the WSDL, remove it from your local file system.

Load the WSDL in the MDS Repository

To load the WSDL and other artifacts to the MDS repository there is an ANT script available on the server. To use ANT, make sure the needed environment settings are made correctly. When you installed AIA there is a Shell script available the will source both AIA and ANT environments: aiaenv.sh. This script can be found in ...../weblogic/aia30/aia_instances/aia30poc/bin. It can be convenient to copy this to your home directory.

  • Source AIA and ANT environment: source ./aiaenv.sh.
  • Alter the UpdateMetaDataDP.xml configuration file. It can be found in ...../weblogic/aia30/aia_instances/aia30poc/config.

In case your vi isn’t up to par use a tool like WinSCP and choose Edit in the context menu:

In the UpdateMetaDataDP.xml file alter the file set. In the example on which the screenshot is based
AIAComponents/ApplicationConnectorServiceLibrary/Retail/V1/RequesterABCS/CreateStockChangeLOCUSReqABCSImpl.wsdl
is added.

And now you are ready to run ANT using the actual loading script:
ant –f /fs01/app/oracle/esbtst01/weblogic/aia30/Infrastructure/Install/scripts/UpdateMetaData.xml


Check the output of the ANT script:

  • check that the correct number of files has been copied.
  • the server gave a HTTP response 200.
  • The deployment of the composite was successful.

Another check to verify a correct load into the MDS Repository is to use the MDS Browser in JDeveloper to find the file you just uploaded. A refresh of the view could be needed to include the latest changes and additions.

Using the WSDL in the MDS Repository in your source code

The last step is to reference to the WSDL in the MDS Repository, since the file has been removed from the local file system. Double click the Exposed Service to open the wizard:

Choose Existing WSDL to select the WSDL from the MDS Repository:

Check the change using the source view. In the import of the WSDL in the composite.xml there should now be an URL referring to oramds:, like in the example below:

<import namespace="http://xmlns.oracle.com/ABCSImpl/LOCUS/Core/CreateStockChangeLOCUSReqABCSImpl/V1"
        location="oramds:/apps/AIAMetaData/AIAComponents/ApplicationConnectorServiceLibrary/Locus/V1/RequesterABCS/CreateStockChangeLOCUSReqABCSImpl.wsdl"
        importType="wsdl"/>

Oracle OpenWorld 2010: Must see session guides

To prepare your visit to Oracle OpenWorld 2010, this post provides some links to selections of sessions with a focus on eg BPM, AIA, et cetera. Here is my top ten:

  1. Oracle AIA – Application Integration Architecture
  2. Architects and architecture
  3. BPM – Business Process Management
  4. Cloud Computing
  5. Data Integration
  6. EDA – Event Driven Architecture
  7. Fusion Middleware development
  8. Java EE
  9. Middleware for Enterprise Applications
  10. SOA – Service Oriented Architecture

Plug

Okay, i’ll plug two sessions:

  • Customer – S314708 – Transform Your Business with Oracle Application Integration Architecture | Monday, September 20, 14:00 | Moscone West L3, Rm 3011
  • Colleague – S316135 – From Oracle Forms to a Service-Oriented Architecture with Oracle SOA Suite 11g | Tuesday, September 21, 5:00PM | Marriott Marquis, Salon 9

Have Fun

AIAMigrationUtility avoid NullPointerException in CompositeUtil.java

Using the AIAMigrationUtility in AIA 11g R1 we encountered the following error:

invokeMigrationUtility:
[echo]

[exec] setupMDSstore:
[exec]
[exec] bpel:
[exec] [upgrade]

[exec] [upgrade] Reading WSDL Location http://lnx40.deltalounge.net:8001/soa-infra/services/default/AIAAsyncErrorHandlingBPELProcess/client?WSDL
[exec] [upgrade] Jul 26, 2010 3:27:34 PM oracle.viewgen.ViewGenerator main
[exec] [upgrade] SEVERE: Upgrade failed. Check the logs for any exceptions. Ensure that the WSDL URLs specified in the project are reachable and a valid 10.1.3.x project is used for upgrade. Before re-attempting upgrade, restore the original project code source from the backup directory.
[exec] [upgrade] java.lang.NullPointerException
[exec] [upgrade] at oracle.viewgen.composite.CompositeUtil.setupBinding(CompositeUtil.java:686)
[exec] [upgrade] at oracle.viewgen.composite.CompositeUtil.setupCompositeServices(CompositeUtil.java:444)
[exec] [upgrade] at oracle.viewgen.composite.CompositeUtil.createComposite(CompositeUtil.java:315)
[exec] [upgrade] at oracle.viewgen.ViewGenerator.main(ViewGenerator.java:316)
[exec] [upgrade] Exception in thread “Main Thread” java.lang.NullPointerException
[exec] [upgrade] at oracle.viewgen.composite.CompositeUtil.setupBinding(CompositeUtil.java:686)
[exec] [upgrade] at oracle.viewgen.composite.CompositeUtil.setupCompositeServices(CompositeUtil.java:444)
[exec] [upgrade] at oracle.viewgen.composite.CompositeUtil.createComposite(CompositeUtil.java:315)
[exec] [upgrade] at oracle.viewgen.ViewGenerator.main(ViewGenerator.java:316)
[exec]
[exec] BUILD FAILED
[exec] /fs01/app/oracle/esbtst01/weblogic/Oracle_SOA1/bin/ant-sca-upgrade.xml:71: Java returned: 1
[exec]
[exec] Total time: 5 seconds

BUILD FAILED
/fs01/app/oracle/esbtst01/weblogic/aia30/util/AIAMigrationUtility/AIAMigrationUtility.xml:58: The following error occurred while executing this line:
/fs01/app/oracle/esbtst01/weblogic/aia30/util/AIAMigrationUtility/AIAMigrationUtility.xml:140: exec returned: 1

Total time: 7 seconds

This was solved (unexpected) by altering the adf-config.xml in the .adf/META-INF/ directory for the workspace. The following was added:

          <namespace metadata-store-usage="mstore-usage_2"
                     path="/apps/AIAMetaData"/>
....
          <metadata-store-usage id="mstore-usage_2">
            <metadata-store class-name="oracle.mds.persistence.stores.db.DBMetadataStore">
              <property value="DEV_MDS" name="jdbc-userid"/>
              <property value="poctst01" name="jdbc-password"/>
              <property value="jdbc:oracle:thin:@lnx42.deltalounge.net:1521:poctst01"
                        name="jdbc-url"/>
              <property value="soa-infra" name="partition-name"/>
            </metadata-store>
          </metadata-store-usage>

In other words the connection information for the MDS has been provided.

Update ANT and MDS

Today I came across his blogpost on another ANT script using MDS during deployment. Which requires a similar solution: altering the adf-config.xml in the .adf/META-INF/ directory.

Reference binding to Service without WSDL

For the first time I had to make an integration to a service that had no WSDL deployed with it. Since the (SCA) Composite assumes a WSDL it takes some time to figure out how to realise this. Under default conditions a Reference in a (SCA) Composite in SOA Suite 11g looks something like:

<reference ui:wsdlLocation="SomeDataRef.wsdl"
                   name="SomeDataWebService">
  <interface.wsdl interface="http://ws.deltalounge.net/SomeDataService#wsdl.interface(SomeData)"
                  callbackInterface="http://ws.deltalounge.net/#wsdl.interface(SomeData)"/>
  <binding.ws port="http://ws.deltalounge.net/#wsdl.endpoint(SomeDataService/SomeData_pt)"
              location="http://ws.deltalounge.net/tstservices/SomeDataService?wsdl" />

The location of the binding.ws points to a WSDL. Which is no problem at compile time. However at runtime the WSDL can not be found and an error is raised.
This error can be prevented by pointing to the endpoint instead of to the WSDL. To accomplish this your Reference in a (SCA) Composite in SOA Suite 11g would look something like:

<reference ui:wsdlLocation="SomeDataRef.wsdl"
                   name="SomeDataWebService">
  <interface.wsdl interface="http://ws.deltalounge.net/SomeDataService#wsdl.interface(SomeData)"
                  callbackInterface="http://ws.deltalounge.net/#wsdl.interface(SomeData)"/>
  <binding.ws port="http://ws.deltalounge.net/#wsdl.endpoint(SomeDataService/SomeData_pt)"
              uri="http://ws.deltalounge.net/tst/services/SomeDataService"/>

Now there is an uri in the binding.ws refering to an endpoint.

AIAMigrationUtility fails for AIAAsyncErrorHandlingBPELProcess

While using the AIAMigrationUtility the following error occurs:

1
2
3
4
5
6
7
8
9
[exec]   [upgrade] Jul 26, 2010 3:02:04 PM oracle.viewgen.ViewGenerator main
[exec]   [upgrade] SEVERE: Upgrade failed. Check the logs for any exceptions. Ensure that the WSDL URLs specified in the project are reachable and a valid 10.1.3.x project is used for upgrade. Before re-attempting upgrade, restore the original project code source from the backup directory.
[exec]   [upgrade] oracle.j2ee.ws.wsdl.LocalizedWSDLException: WSDLException: faultCode=OTHER_ERROR: Failed to read WSDL from http://serverdomain:8001/orabpel/default/AIAAsyncErrorHandlingBPELProcess/1.0/AIAAsyncErrorHandlingBPELProcess?wsdl:WSDL not found
[exec]   [upgrade]         at oracle.viewgen.plugin.bpel.BPELPlugin.createComponentType(BPELPlugin.java:172)
[exec]   [upgrade]         at oracle.viewgen.ViewGenerator.main(ViewGenerator.java:223)
[exec]   [upgrade] Caused by: oracle.j2ee.ws.wsdl.LocalizedWSDLException: WSDLException: faultCode=OTHER_ERROR: Failed to read WSDL from http://serverdomain:8001/orabpel/default/AIAAsyncErrorHandlingBPELProcess/1.0/AIAAsyncErrorHandlingBPELProcess?wsdl:WSDL not found
[exec]   [upgrade]         at oracle.j2ee.ws.wsdl.xml.WSDLReaderImpl.openAsStreamConnection(WSDLReaderImpl.java:541)
[exec]   [upgrade]         at oracle.j2ee.ws.wsdl.xml.WSDLReaderImpl.readDocument(WSDLReaderImpl.java:427)
[exec]   [upgrade]         at oracle.j2ee.ws.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:366)

There is a regular expression in the replaceAIAAsyncURL target that doesn’t handle the versioned url. You can either replace it so it allows for version numbering:

1
2
<replaceregexp match="http://[\S&amp;&amp;[^/]]+(?::\d
+)??/orabpel/default/AIAAsyncErrorHandlingBPELProcess/.*AIAAsyncErrorHandlingBPELProcess\?wsdl"

or manually alter the bpel.xml files replacing the

1
http://serverdomain:8001/orabpel/default/AIAAsyncErrorHandlingBPELProcess/1.0/AIAAsyncErrorHandlingBPELProcess?wsdl

with

1
http://fmw11g-server:8001/soa-infra/services/default/AIAAsyncErrorHandlingBPELProcess/client?WSDL

or the versioned wsdl of the Async error handling.