In this blog entry I am going to deal with a very common problem related to ESB which people experience.
Problem:
The error which I am discussing it here occurs when you click on the services already registred on ESB Console.
Create a simple ESB project, deploy it to the Integration Server. Login to the ESB Control. When you click on any of the services in ESB Control, you receive the following pop-up error:
"The metadata XML that was processed does not comply with the ESB Metadata XML Schema.
Cause: Invalid text 'esb:///ESB_Projects/ESB_TEST/PollDB.wsdl' in element: 'wsdlURL'.
If you are manually editing the Import Files, ensure that the metadata is valid and well formed. Otherwise, this is an Internal Error. Contact Oracle Support."
Solution:
The solution is pretty simple. This error occurs when the Application name contains spaces. The application name in JDeveloper must not contain spaces.
EXAMPLE1: ESB Test Appl (Wrong Application Name)
EXAMPLE2: ESB_Test_Appl (Right Application Name)
Bingo......
Keep Learning with me...
Technical posts containing information and solutions on Oracle Fusion Middleware 12c/11g/10g, AIA, Oracle BPEL PM, Mediator, OSB, MFT, ESB, OWSM, Business Rules, JDeveloper, Oracle Weblogic, Oracle Application Server etc..etc..
Thursday, August 21, 2008
Friday, August 15, 2008
ORABPEL-13080
During working on MQ Adapter for one of the clients project, I faced this problem so thought of posting it in my blog.
Error Summary:
org.collaxa.thirdparty.apache.wsif.WSIFException: esb:///ESB_Projects/Jdev-Abhishek_ESP200011/ESP_PLF_JLE_JLN_IncomingMQAdapter.wsdl [
Enqueue_ptt::Enqueue(schedule) ] - WSIF JCA Execute of operation 'Enqueue' failed due to: Error.
"[MessageProducer] Error while putting message in PORTAL.PUBLISHER.ERRORS "
; nested exception is:
ORABPEL-13080
Error.
"[MessageProducer] Error while putting message in PORTAL.PUBLISHER.ERRORS "
Contact oracle support if error is not fixable.
Solution:
ORABPEL-13080 error is associated with the MQ Adapter. I have identified two possible cause for this error:
1) Queue is full.
2) Queue not accessible.
So to get rid of this error, either check your MQ Adapter connection details and priviledge or Clear the unwanted messages from the Queue.
Thats it...Keep Learning...
Error Summary:
org.collaxa.thirdparty.apache.wsif.WSIFException: esb:///ESB_Projects/Jdev-Abhishek_ESP200011/ESP_PLF_JLE_JLN_IncomingMQAdapter.wsdl [
Enqueue_ptt::Enqueue(schedule) ] - WSIF JCA Execute of operation 'Enqueue' failed due to: Error.
"[MessageProducer] Error while putting message in PORTAL.PUBLISHER.ERRORS "
; nested exception is:
ORABPEL-13080
Error.
"[MessageProducer] Error while putting message in PORTAL.PUBLISHER.ERRORS "
Contact oracle support if error is not fixable.
Solution:
ORABPEL-13080 error is associated with the MQ Adapter. I have identified two possible cause for this error:
1) Queue is full.
2) Queue not accessible.
So to get rid of this error, either check your MQ Adapter connection details and priviledge or Clear the unwanted messages from the Queue.
Thats it...Keep Learning...
Wednesday, August 13, 2008
Using orcl:sequence-next-val
Recently this question was asked to me as a comment to one of my post. I have replied to the comment. I also felt to post this as a blog so that it can prove beneficial to others. Here it goes...
INTRODUCTION:
The function orcl:sequence-next-val takes 2 parameters. It return the next value of an Oracle sequence. It is similar to sequence generation what we see in Oracle SQL.
How to proceed:
First of all you need to drag that function to the tranformation swimlane.
Create a database sequence in Database, say,TEST. This will be the first parameter for the orcl:sequence-next-val function.
The second parameter will be your database connection details, i.e. the database in which your source table is defined.
Suppose your database is having details as:
Username: abhi
Password: abhishek
Host: 172.128.5.13
Port: 1521
SID: Oracle
so the second parameter will look like this:
'jdbc:oracle:thin:abhi/abhishek@172.128.5.13:1521:Oracle'
or for the second parameter you can add a datasource entry in data-sources.xml file under soa_home\j2ee\oc4j_soa\config.
Say the datasource name is BPEL_DBS. so the function will look like,
orcl:sequence-next-val('TEST','jdbc/BPEL_DBS')
After doing this, map it to the destination field.
Your are done...Happy Learnings...
INTRODUCTION:
The function orcl:sequence-next-val takes 2 parameters. It return the next value of an Oracle sequence. It is similar to sequence generation what we see in Oracle SQL.
How to proceed:
First of all you need to drag that function to the tranformation swimlane.
Create a database sequence in Database, say,TEST. This will be the first parameter for the orcl:sequence-next-val function.
The second parameter will be your database connection details, i.e. the database in which your source table is defined.
Suppose your database is having details as:
Username: abhi
Password: abhishek
Host: 172.128.5.13
Port: 1521
SID: Oracle
so the second parameter will look like this:
'jdbc:oracle:thin:abhi/abhishek@172.128.5.13:1521:Oracle'
or for the second parameter you can add a datasource entry in data-sources.xml file under soa_home\j2ee\oc4j_soa\config.
Say the datasource name is BPEL_DBS. so the function will look like,
orcl:sequence-next-val('TEST','jdbc/BPEL_DBS')
After doing this, map it to the destination field.
Your are done...Happy Learnings...
Friday, August 8, 2008
File Adapter : Hidden Treasure-2
Getting File Size
I am assuming that people reading this blog know how to get the File name and the input directory of the file. In this blog entry I will demonstrate an another aspect of File Adapter i.e. getting the input file size.
Note:- If you don't know about getting file name & input directory, refer to my blog entry dated 14th June 2008.
Introduction:
If you see the fileAdapterInboundHeader.wsdl file in Jdeveloper, you will notice that this wsdl is containing only two elements i.e. fileName and directory. Now If you goto the BPEL Console and look closely at the variable part (which contains file name and directory information), you will notice that at runtime Assign activity is displaying 5 elements. So I felt that somehow I can get the file size too. Its pretty simple.
Solution:
To acheive it, just you have to modify the fileAdapterInboundHeader.wsdl file. Note that the fileAdapterInboundHeader.wsdl is a read-only file so to modify it, you have to remove the read-only permission. After removing the permission you can edit the code.
After change, the code will look like this:

Note the highlighted element "size" below the directory element. After doing the changes, apply the read-only permission back to the file(not necessary).
Now you will be able use the size attribute in your assign activity.
Pretty cool stuff...right..
Have a Happy Happy learning...
I am assuming that people reading this blog know how to get the File name and the input directory of the file. In this blog entry I will demonstrate an another aspect of File Adapter i.e. getting the input file size.
Note:- If you don't know about getting file name & input directory, refer to my blog entry dated 14th June 2008.
Introduction:
If you see the fileAdapterInboundHeader.wsdl file in Jdeveloper, you will notice that this wsdl is containing only two elements i.e. fileName and directory. Now If you goto the BPEL Console and look closely at the variable part (which contains file name and directory information), you will notice that at runtime Assign activity is displaying 5 elements. So I felt that somehow I can get the file size too. Its pretty simple.
Solution:
To acheive it, just you have to modify the fileAdapterInboundHeader.wsdl file. Note that the fileAdapterInboundHeader.wsdl is a read-only file so to modify it, you have to remove the read-only permission. After removing the permission you can edit the code.
After change, the code will look like this:
Note the highlighted element "size" below the directory element. After doing the changes, apply the read-only permission back to the file(not necessary).
Now you will be able use the size attribute in your assign activity.
Pretty cool stuff...right..
Have a Happy Happy learning...
BPEL : PURGING INSTANCES
Here I am providing various flavors of Purging BPEL instances.
Following options will be covered:
1) Purges instance for a particular domain, for particular state
and for particular specified period from the BPEL dehydration store.
SUBJECT:PURGE INSTANCE-1
2) purges instance for a particular domain,version and between specified period for any state other than state 0 and 1 from the BPEL dehydration store.
SUBJECT:PURGE INSTANCE-2
3) Purges all the instance in one go from the dehydration store. (Handle with care)
SUBJECT:PURGE INSTANCE-3
All you need to do is, run the code under ORABPEL Schema. So scroll down and enjoy the show.
Happy Learnings.....
Following options will be covered:
1) Purges instance for a particular domain, for particular state
and for particular specified period from the BPEL dehydration store.
SUBJECT:PURGE INSTANCE-1
2) purges instance for a particular domain,version and between specified period for any state other than state 0 and 1 from the BPEL dehydration store.
SUBJECT:PURGE INSTANCE-2
3) Purges all the instance in one go from the dehydration store. (Handle with care)
SUBJECT:PURGE INSTANCE-3
All you need to do is, run the code under ORABPEL Schema. So scroll down and enjoy the show.
Happy Learnings.....
BPEL: Purging Instances-3
INTRODUCTION:
This script purges all the instance in one go from the dehydration store. This script is useful in a developement environement. It is the faster way by which you can clear the dehydration store.
Guideline for using this code:
1. Don't run this script until you are very much sure of deleting all the instances from the dehydration store.
2. First stop the BPEL instance via Enterprise manager then run this script.
truncate table cube_instance;
truncate table cube_scope;
truncate table work_item;
truncate table wi_exception;
truncate table document_ci_ref;
truncate table document_dlv_msg_ref;
truncate table scope_activation;
truncate table dlv_subscription;
truncate table audit_trail;
truncate table audit_details;
truncate table sync_trail;
truncate table sync_store;
truncate table dlv_message;
truncate table invoke_message;
truncate table ci_indexes;
alter table cube_instance deallocate unused;
alter table cube_scope deallocate unused;
alter table work_item deallocate unused;
alter table wi_exception deallocate unused;
alter table document_ci_ref deallocate unused;
alter table document_dlv_msg_ref deallocate unused;
alter table scope_activation deallocate unused;
alter table dlv_subscription deallocate unused;
alter table audit_trail deallocate unused;
alter table audit_details deallocate unused;
alter table sync_trail deallocate unused;
alter table sync_store deallocate unused;
alter table dlv_message deallocate unused;
alter table invoke_message deallocate unused;
alter table ci_indexes deallocate unused;
alter table cube_scope enable row movement;
alter table cube_scope shrink space compact;
alter table cube_scope shrink space;
alter table cube_scope disable row movement;
alter table cube_instance enable row movement;
alter table cube_instance shrink space compact;
alter table cube_instance shrink space;
alter table cube_instance disable row movement;
exec dbms_utility.analyze_schema('ORABPEL', 'Compute');
Happy Learnings....
This script purges all the instance in one go from the dehydration store. This script is useful in a developement environement. It is the faster way by which you can clear the dehydration store.
Guideline for using this code:
1. Don't run this script until you are very much sure of deleting all the instances from the dehydration store.
2. First stop the BPEL instance via Enterprise manager then run this script.
truncate table cube_instance;
truncate table cube_scope;
truncate table work_item;
truncate table wi_exception;
truncate table document_ci_ref;
truncate table document_dlv_msg_ref;
truncate table scope_activation;
truncate table dlv_subscription;
truncate table audit_trail;
truncate table audit_details;
truncate table sync_trail;
truncate table sync_store;
truncate table dlv_message;
truncate table invoke_message;
truncate table ci_indexes;
alter table cube_instance deallocate unused;
alter table cube_scope deallocate unused;
alter table work_item deallocate unused;
alter table wi_exception deallocate unused;
alter table document_ci_ref deallocate unused;
alter table document_dlv_msg_ref deallocate unused;
alter table scope_activation deallocate unused;
alter table dlv_subscription deallocate unused;
alter table audit_trail deallocate unused;
alter table audit_details deallocate unused;
alter table sync_trail deallocate unused;
alter table sync_store deallocate unused;
alter table dlv_message deallocate unused;
alter table invoke_message deallocate unused;
alter table ci_indexes deallocate unused;
alter table cube_scope enable row movement;
alter table cube_scope shrink space compact;
alter table cube_scope shrink space;
alter table cube_scope disable row movement;
alter table cube_instance enable row movement;
alter table cube_instance shrink space compact;
alter table cube_instance shrink space;
alter table cube_instance disable row movement;
exec dbms_utility.analyze_schema('ORABPEL', 'Compute');
Happy Learnings....
Subscribe to:
Posts (Atom)