ADF Business Components Service relation to normal WS

By W.Zh Oct 2011

ADF Business Components Service in the fusion dev guide is the web service interface that exposed from a BC Application Module. But BC Service is not a normal web service. It has more features than a normal webservice.

  1. For a normal web service, if you want access from your java code, in Jdev, you can create a static client proxy code call this WS. If you have the BC service, you still can do this way. This means you can invoke BC service like others normal WS in your java application code.
  2. If you have one ADF web application to invoke another BC service remotely, then best way to access the BC Service, is not through the java WS static proxy code to call it. You should use the oracle.jbo.client.svc.ServiceFactory to invoke the BC service. You get more benefit by this way. See the chapter 41 of the “Oracle Fusion Applications Developer’s Guide”.
  3. If you have one SOA composite application, you want to invoke a BC service remotely, you have two choices here for  SOA access the external WS service,  one is called “ADF-BC service”. This one is dedicated for BC service, another one called “Web Service”. Of course, the best way to use the “ADF-BC service”.
  4. By “ADF-BC service” and oracle.jbo.client.svc.ServiceFactory you can invoke the BC service, and you also can access the SDO objects which exposed via this service. So you can change these SDO data, and save to DB. Do not need to call some method in service interface method to do that. You have to refer to fusion dev guide to see how to use this.  In SOA, there are something called “entity variables” in BPEL can use SDO object from partner links (Such as ADB-BC links).

 

Some examples to create BC service and consumed by a SOA application, and entity variables.

 

http://go2kavinkumar.wordpress.com/tag/adf-bc-service/

http://go2kavinkumar.wordpress.com/2011/08/16/invoking-an-adf-bc-service-asynchronously-from-soa-composite-bpel-11g/

http://jianmingli.com/wp/?p=2838

 

 

 

 

Advertisements

SOA ADF-BC service “Could not find registry …”

By W.ZH Oct 2011

Issue:

In the SOA Composite Application, we have ability  to access the ADF-BC service from BPEL Service Adapter. Everything looks fine in Jdeveloper, but after i deploy my ADF application and also the SOA application. try to test the SOA application via WS. Always get an error like:

“Could not find registry for SalaryControlService_JOBServiceRegistry”


Reason:

1. From Jdev help, you know that when you create the ADF-BC Service Adapter in BPEL as external service, the input registry should be “XXXXX_BCServiceRegistry”.

2. I also double check in the Jdev’s ADF application deployment profile, to make sure the application name is “SalaryControlService”.

3. Another way to veryfiy your application name is by <FMHOME>\user_projects\domains\<DOMAIN>\config\config.xml

So the final way I make it to work is from this link:
https://forums.oracle.com/forums/thread.jspa?threadID=925301 .  Give them all credits.


Solution:

In your ADF application’s weblogic-application.xml, make sure you added the JBO listener to it:

<listener>

<listener-class>oracle.jbo.client.svc.ADFApplicationLifecycleListener</listener-class>

</listener>

Then this problem can be solved!

Publish Buisiness Event From ADF-BC Entity Object to SOA Server

By W.ZH  Sept 2011

Refer to the Andrejus Baranovskis and Putten’s blog, he has very good example for the Buisiness Event From ADF-BC Entity Object. Links are here:

http://andrejusb.blogspot.com/2009/08/business-events-and-adf-business.html

http://biemond.blogspot.com/2008/05/events-in-adf-bc-and-handled-by-soa.html

I have downloaded his example and tried it, here are some notes for it.

1. Entity Object has ability to config and trigger the buisiness events to SOA Suite, easy to use.

2. I have done some changes to his example as it has some issues when I tested it, such as it links a remote service to call, which is noise in the example.  and which uses old version DB of “hr” of the Oracle database example. So when I deployed the samples, it just does not run.

3. I put my working sample copy to here, you can download free
https://sites.google.com/site/wzhsite/files/SalaryEventSample.zip

SalaryManagement is one SOA composite application to receive the event.

SalaryUpdateRemote2 is the web application to create and publish the event.

4. You need to change the DB config info to point to your IP address and make it run.

5. You need to deploy the  SalaryUpdateRemote2  to your SOA server, such as soa_server1, which is my SOA composite appllications runs, as event publishing need to access the EDN in the SOA server context. Publishing EO’s application can not deploy to other server, such as AdminServer, it will get nullpointerexception when create event.

6. Then you can go to http://yourIPaddress:8001/suremote/faces/main.jspx  to access the test main page and to update employee’s salary, then you will see that an event is received by the SalaryManagement.

7. When you deploy the project through the jdeveloper to the SOA server, you might find some issue to run , such as
java.sql.SQLException: ORA-01005: null password given; logon denied , refer to my link to solve it.