In this blog post I will demonstrate an error handling mechanism which can be used to achieve guaranteed delivery of messages in a specific order. To implement this I have used Oracle SOA Suite 11g, BPEL 2.0. The method described however can also be implemented by other technologies/languages. The method used is different from (as far as I know) previously described methods to implement exception handling in Oracle SOA Suite. A single JMS topic is used and JMS message selectors based on custom JMS headers are used by clients. By using a JMS topic, the services are loosely coupled. This method also allows tracing of flows over the topic in the Enterprise Manager Fusion Middleware Control (when Oracle SOA Suite is used). A screenshot of this mechanism implemented is shown in the screenshot below. It will be explained in more detail below.
Articles containing tips, tricks and nice to knows related to IT stuff I find interesting. Also serves as online memory.
Monday, February 24, 2014
Friday, February 7, 2014
JAXB and XML generation; missing elements
The Java API for XML Binding, JAXB (https://jaxb.java.net/) is a framework often used in Java to make working with XML easier. Most modern Java IDE's (such as JDeveloper, Eclipse, Netbeans) support direct generation of Java classes from an XML schema definition. JAXB allows Java code to be marshalled to XML and XML to be unmarshalled to Java classes.
If you generate Java classes from an XML schema definition, create an instance of the generated class and unmarshall it to XML, the XML will not in all cases be compliant to the schema the classes were generated from. This can cause problems if correctness is assumed based on usage of the framework. Validation can help detect problems and there are several methods to circumvent them.
If you generate Java classes from an XML schema definition, create an instance of the generated class and unmarshall it to XML, the XML will not in all cases be compliant to the schema the classes were generated from. This can cause problems if correctness is assumed based on usage of the framework. Validation can help detect problems and there are several methods to circumvent them.
Monday, January 20, 2014
JDBC from the Oracle Service Bus
There are different ways to do database calls from the Oracle Service Bus. In this blog post I look at several methods.
The methods looked at;
1 using an external webservice (without OSB)
2 using an external webservice proxied by the OSB
The methods looked at;
1 using an external webservice (without OSB)
2 using an external webservice proxied by the OSB
3 using the fn-bea:execute-sql function from the OSB
4 using the JCA DbAdapter from the OSB provided by Oracle as part of Oracle SOA Suite
Friday, January 10, 2014
JasperReports: Quickly generate and customize reports
For a small company I had created an Oracle APEX application. They wanted to create reports from an underlying database (in order to send invoices). Oracle APEX has the option of creating interactive reports (http://www.oracle.com/technetwork/developer-tools/apex/application-express/irrs-083031.html). These reports can be exported to several formats (e.g. CSV, PDF, HTML).
The customer is a small company so commercial products were not an option. The customer wanted to customize/layout the generated reports. The time available to develop a solution was very limited. After development, the customer needed to be able to make small layout changes independent of the developer (since the developer had other things to do). I first looked at the standard APEX Apache FOP implementation. Then I decided to take a look at JasperReports. The below image displays a report which was created in just a couple of minutes based on data from the sample HR schema present in most Oracle databases.
The customer is a small company so commercial products were not an option. The customer wanted to customize/layout the generated reports. The time available to develop a solution was very limited. After development, the customer needed to be able to make small layout changes independent of the developer (since the developer had other things to do). I first looked at the standard APEX Apache FOP implementation. Then I decided to take a look at JasperReports. The below image displays a report which was created in just a couple of minutes based on data from the sample HR schema present in most Oracle databases.
Labels:
apache fop,
apex,
bi,
fo-xsl,
jasperreports,
jrxml,
quick,
report
Thursday, December 12, 2013
First steps into the Oracle Database Cloud
Oracle provides a Database Cloud Service. In a previous post I've looked at the Oracle Java Cloud Service (http://javaoraclesoa.blogspot.nl/2013/12/first-steps-into-oracle-java-cloud.html). The database is of course also an important component used in most applications. In this blog post I'll describe my first experiences with the Oracle Database Cloud service. I've used two methods to connect to the Oracle Database Cloud service. The first one from SQLDeveloper. Next I created a webservice, deployed it to the Oracle Java Cloud service and fetched data from the Oracle Database Cloud service with it.
There are of course other methods to interact with the Oracle Database Cloud service. It is for example possible using SQLWorkshop from the Apex interface to expose RESTful services to access the database. See for example http://multikoop.blogspot.nl/2012/11/oracle-java-and-database-cloud-services.html on how to create these services. By default, calls to the Oracle Cloud are encrypted. See https://weblogs.java.net/blog/bleonard/archive/2013/05/02/calling-oracle-cloud-service-java on how to call services.
There are of course other methods to interact with the Oracle Database Cloud service. It is for example possible using SQLWorkshop from the Apex interface to expose RESTful services to access the database. See for example http://multikoop.blogspot.nl/2012/11/oracle-java-and-database-cloud-services.html on how to create these services. By default, calls to the Oracle Cloud are encrypted. See https://weblogs.java.net/blog/bleonard/archive/2013/05/02/calling-oracle-cloud-service-java on how to call services.
Friday, December 6, 2013
Oracle BAM. Looking at different integration options
In order to monitor process flow, Oracle Business Activity Monitoring (BAM) can be used. Oracle BAM is part of the Oracle SOA Suite. What are the options for implementing Oracle BAM in the context of Oracle SOA composites? When should you use which method to integrate with BAM? In this post I'll describe the different methods of integration with Oracle BAM and the work required in order to get it working. The below screenshot was taken from; http://www.oracle.com/technetwork/middleware/bam/callcenter-086652.html to illustrate what an Oracle BAM dashboard looks like.
Sunday, December 1, 2013
First steps into the Oracle Java Cloud
Integration on premise has been there for quite a while. Oracle SOA Suite provides many tools to help customers accomplish that. The area of integration however is expanding. More customers start using cloud services. Integration with cloud services differs in several aspects from on premise integration. Management of servers/accounts differs. Usually there is a limited interface which the cloud provider offers to customize the behavior/scaling of virtual servers/services. Also development differs. You deploy 'to the cloud' and not to a local (on the same network) server. Automation of a business process expands to beyond the borders of the business firewall so security and identity management become more important.
Since this is my first blog post about the Oracle Cloud, I will not go into much detail here but will describe my experience with creating a trial account for the Oracle Java Cloud, deploying a simple helloworld webservice and calling it from outside the cloud.
Since this is my first blog post about the Oracle Cloud, I will not go into much detail here but will describe my experience with creating a trial account for the Oracle Java Cloud, deploying a simple helloworld webservice and calling it from outside the cloud.
Subscribe to:
Posts (Atom)




