Doorgaan naar hoofdcontent

Posts

Posts uit 2009 tonen

JDBC error when deploying

I encountered the following exception when deploying a JDBC configuration to Weblogic Server:  com.rsa.jsafe.JSAFE_PaddingException: Could not perform unpadding: invalid pad byte. After some analysis this error occurs when you encrypted the password for the JDBC connection in another domain as where you deploy the JDBC configuration. Conclusion: You should always encrypt on the same Domain as you deploy the configuration ! PS The password is encrypted within the password-encrypted element.

Automatic XQuery unit tests for OSB projects

Within the OSB 10.3 you use XQuery code to perform data transformations. These transformations can be very complex. I am in favor of TDD and i want to use automatic tests for XQueries. You can use the OSB Console to test XQueries but this is not very practical with complex Queries and takes a lot of time.You can also use XQuery and JDeveloper to run XQueries and this inspired me to write a simple XQUnit module to test xqueries. This blog shows you how to set up automatic tests with the use of JUnit , XMLUnit and Oracle XQuery engine. The contraints for me were: 1) The XQuery code should be as-is, so no changes with scripts or whatever. The XQueries are used within the test framework as used within the OSB. 2) The XQuery engine of the WLS must be used. I could use some other XQuery engine, but this would not test the real WLS engine and still errors could occur runtime. 3) The test framework can be used within Java unit tests. This way it can also be used within Maven for instanc

Technical CDM model considerations

There were probably already hundreds of discussions about versioning XML schemas and WSDL documents. This Blog considers the strategy described in Thomas Erl's "Web Service Contract Design and Versioning for SOA". How would you use these practices within a CDM? This Blog considers some options you have when developing XML Schemas out of you logical CDM. Consider a small CDM in which the following model is used. LegalEntity <-- NaturalPerson <-- Employee                   <-- NonNaturalPerson Namespaces For these entities you have some possibilities to use namespaces: 1) A group of Entities share the same namespace Example: http://www.blog/organisation/v1 2) Each Entity gets its own namespace Example: http://www.blog/organisation/legalentity/v1 http://www.blog/organisation/naturalperson/v1 The advantages of option 1 are Only 1 namespace needed, namespaces are hell as we all know The entities belong together so this seems logical The disadva

JPA problem: Column override on fields

Today I was struggling with WLS 10.3, Workshop 10.3, JPA and Hibernate to get an Entity persistent to a Database. I got the following error: I used the following code (which was acutally generated by Workshop!): @Entity() @Table(name="werknemers") public class Werknemer implements Serializable { //default serial version id, required for serializable classes. private static final long serialVersionUID = 1L; @Id private String persNummer; private String emailInternet; public Werknemer() { } @Basic() @Column(name="email_internet", nullable=false, length=128) public String getEmailInternet() { return this.emailInternet; } public void setEmailInternet(String emailInternet) { this.emailInternet = emailInternet; } } As you can see from the error code the column name "email_internet" (as indicated by @Column) was not taken, but instead the "emailInternet" property was taken. I could not find the problem, but the followin

International SOA Symposium 2009

On the 22th and 23th of october 2009 the second SOA Symposium and first Cloud symposium took place in Rotterdam. For me it was the first SOA Symposium. The main theme of this symposium was the introduction of the SOA Manifesto by some respectful people of the SOA community like Thomas Erl, Anne Thomas Manes and Grady Booch. There were 6 SOA tracks, 2 Cloud computing tracks and a working group that worked on Candidate SOA Design patterns and the SOA Manifesto. The first day I followed: The Convergence and Unification of SOA, EDA & BPM, by Manas Deb, Oracle This presentation was about to think about the business events that occur within your business and to take these events into account early. So it should be natural to combine events, services and processes to create the need for the business. Events were also used to split complex processes. At the end of the presentation his new book was given away and I got hold of one piece (see also here for a book review). Servic

Book review: Getting Started with Oracle SOA Suite 11g R1

I got this book on the second SOA Symposium in Rotterdam from one of the authors (Manas Deb) who happen to give a presentation there on SOA, BPM and EDA. He signed the book, so I have a unique piece :) This book gives you a prefect head start with the Oracle SOA Suite 11g. It explains the concepts of SCA, Database-, JMS- and File Adapter, BPEL, Human Tasks, Business Rules, OSB, Unit test of composite SCA applications, Security, Exception Handling, BAM, Event Delivery Network, SDO and B2B. All these concepts are explained with small tutorial examples. If you want to have in depth knowledge of the SOA Suite, this is not the correct book.

Should a SOA Architect be certified?

I am currently following the SOA Certified Architect traject at SOASchool and have finished my first module (jippie). For me the reason to be certified are: It gives you a good basis to understand what SOA is all about This way you can put this into better perspective when using or selecting SOA tools like ESB and BPM. I always compare it with learning first Object Orientation before diving into C++ or Java. This way I truely believe you get better (reusable, maintainable) code.   Just that little more focus on the content then by just reading a good SOA book It forces you to really study the material. It helps when planning an architecture roadmap I know that you always get presented the ideal SOA picture, but at least it helps you when you have to define a SOA roadmap. It also helps you where to give attention and what kind of discussions you have to do. This way it will help to change the mindset of developers/designers/architects/business. However the question remains &

Book review: Understanding SCA

I bought this book to get a global overview of the possibilities of SCA, because it is also implemented within the Oracle SOA Suite 11g. It is the first book on the fairly new SCA standard. If you want to get a global overview the first chapter will already do. The next chapters go deeper into the concepts with Java as the example programming language. Chapter 1 - Introducing SCA The book starts with a global introduction of SCA and its place w.r.t. SOA, J2EE, .NET, Spring and distributed computing. SCA focuses on being able to describe assemblies of components which have been written in a variety programming models and protocols . It does not cover presentation and persistency. Within this chapter the main terms are explained: Service , Component , Composite and Domain . Why another standard? Because there are still some issues with J2EE and .NET, namely complexity and reusability. You have to understand a lot of different technologies like JAX-WS, JMS, EJB, ASP.NET, .NET M

What happened with SOA?

I came accross this article about the question "What happened to SOA?" It is stated that the technical SOA part is a succes but within the whole enterprise it fails (most of the time). It fails most of the time because its still is damn difficult to close the gap between business and IT and SOA does not help either as hard numbers, blogs and experience show. What came to my mind were two things, enterprise architecture must give you control over your IT (applications, hardware and interfaces). If you reach this point, it does not matter how it is setup (SOA may help). As long as you can keep the operational costs low. So make posters and communicate the architecture, something i see rarely done. Projects are too complex and big, so maybe we should start thinking small features/processes and use Agile methologies and start having multidiscipline teams with business representatives in it, instead of staying in the ivory towers of the IT department.

Why not do Agile (EAI/SOA) projects?

The Agile approach is not new anymore, but still I see problems with trying to do projects the Agile way. What I see: Business plans have to be made with functionality and ROI upfront This does not fit the Agile way (Customer Collaboration over contract negotiation). The ROI is sometimes hard to calculate and what you see are naive numbers just to get the project approved. Furthermore it is a long and costly phase. Of course you have to discuss if a functionality is worthwhile. The business wants to know upfront what the costs are and the needed resources This is because resources (people) need to be reserved and hired. They want to know the investments needed in advance because usually budgets are given each (half) year. A project is divided in several subteams which must be coordinated The teams only communicate in the beginning (for the requirements) and at the end (integration testing). They do not communicate during the project and do not integrate during the project.

Installing Oracle SOA Suite/JDeveloper 11g

This post guides you through the installation of the Oracle SOA Suite 11g with JDeveloper 11 with the use of Oracle XE database (for Windows). Note: It is assumed that Oracle XE database is already installed. Required downloads Oracle Weblogic Server 10.3.1   SOA Suite   Repository Creation Utility JDeveloper Studio The detailed steps are nicely described here . The next picture gives a nice overview of the directory structure created. Step1 -  Create Schemas for Oracle SOA Suite and Oracle BAM (RCU) Unzip the files Run bin/rcu.bat At the Database Connection Details fill in the XE details. If you encounter the next fault you have probably not started the XE database.   Ignore all warnings Click OK Select all components I ran into the following problem: When you click Ok you see the following error: And this is about the Processes DB Init parameter that is wrong. To fix this goto the Database Home page, Sql Editor and execute the following statements: a

SOA and Agile a good match?

Everytime when I see efforts in trying to implement a SOA within an enterprise you see the gap stays between the IT department and the business. It is very hard to sell SOA to the business, even if the concept of Services is close to the mindset of the business. So can Agile development be a good approach? I mean Agile has Customer collaboration as one of its key principles in its Manifesto . I see a lot of big project contracts made which are stopped or constantly changing, so why not collaborate more with the customer (business) and establishing the Services together?! This will perhaps change the gap, and the Agile approach is not only for user interface design as I also hear a lot. Why not for integrating systems and implementing business processes? These processes can also be broken down in small peaces. And why should the business be in different work locations as the IT department? So I think that the Agile approach can be a good way to bringing the business and IT toge

Integrating Subversion into Eclipse 3.x

This blog is about the steps to take to integrate Subclipse into Oracle Workshop for Weblogic 10.3. 1) Goto Help -> Software Updates -> Find and Install ... 2) Check "Search for new features to install   3) Click on the "New Remote Site.." button 4) Enter the next information in the dialogue: 5) Select the new site and click Finish 6) The screen shows the features that can be selected, check as shown below and click Next 7) Accept the license agreement, click Next 8) Click the Finish button on the Installation dialogue 9) The software is downloaded. 10) At the Feature Verification dialogue, click Install All 11) You have to Restart Eclipse, so choose Yes 12) The choose Window -> Open Perspective -> Other and choose SVN Repository Exploring 13) Now you can add your repositories. 14) You can change the SVN preferences, under Window -> Preferences -> Team -> SVN And thats it. You are now also able to check out projects from

Moving away from file interfaces

In the company I work for, I see a lot of batch oriented, file interfaces. An example is within the proces of where an employee gets employed. This new employee ie entered within the PeopleSoft system and once a day an export is ran of all employees. This file contains the action that has to be taken towards other systems (add, delete, update). The other systems are phonebook system and authorisation system in which the new employee must be registered too. There is even a separate database that keeps track of the files already processed! This is not what you want, but how would you integrate the systems? Should you use an ESB? Should you use a Common Data Model? Should you include BPM? Should you add another presentation layer? All this creates a lot of overhead for a secondary process, just to SOAlize/BPM it. So what are the benefits to use this elegant IT solution? I think: * Monitoring of the process, so better maintenance * Easier to change the process (for example other authorisat

"Not valid in an Oracle Service Bus Configuration project"

This is the error I got when importing an existing project into Workspace (version 10.3). I found nothing to circumvent the error and the only way was to create a new Configuration and copy the projects into it.

Reuse XQuery within OSB 10gR3

XQuery is a great language that can be used within the OSB for translations and other expressions. Unfortunately the OSB does not support the module construction of XQuery. A module construction can be perfectly reused for code reuse. This post shows how this omission in the OSB can be solved. This example shows how a message with a header and a body can be created of which the header code is reused. 1) First the header function is created (without parameters, but these can also be added). 2) Add another XQuery that creates the message with the header and body content as parameters. 3) Within a Stage or where you want to use the construction add an Assign. 4) The expression must be the Header XQuery. 5) Add another Assign for the message XQuery and add the $body and $header as binding variables. And that's it, so the trick is to use parameters. This may be not always possible but it is a construction you could use.

Integrating PeopleSoft in a SOA

I came accross this post about exposing PeopleSoft functionality as a webservice. This can be very useful when you want to use this functionality within a BPM process, like for example "EmployeeEmployment".

OSB 10gR3 Service versioning

There has been a lot written and discussed about how to do Service versioning. On LinkedIn there is a nice discussion about the WSDL versioning (read here ). Also on InfoQ there is a nice article. I like the strategy in which a minor and major version is used. A minor change is backwards compatible and only updates the documentation element within the WSDL. A major change, also changes the namespace (http://.../v2). The following structure within the OSB can help to implement this strategy. The advantages of this structure are: * The different versions are nicely seperated and can be governed and maintained seperatly. Instead of having only one proxy for all versions and doing some content based routing. * The two versionings can live together and in case the old version is deprecated the proxy can be deleted. This way "old" consumers do not have to migrate in case a major update is published, so they have the time to plan it.

OSB 10gR3 project structure

This blog describes a way you can structure your OSB project structure in a SOA project. Within you OSB domain you have one configuration file that contains several projects. each project represents a Service. The shared resources directories contain common resources that are used within the other projects. This can be a good place to store the CDM XSDs of the domain.

Use of Oracle Adapters (OSB 11g)

In this Oracle post it is stated that new Adapters are available for the Oracle Service Bus. But do we really want these Adapters on the OSB within a SOA? I propose not to implement Services this way, because: Adapters do not belong on the OSB but on the system the Service is actually implemented, because this goed against a known service-oriented design principle of "Service Autonomy". This belongs and should be governed by the Service and not by the OSB (as the Service provider).

SOASchool: Certified SOA Architect

I am currently studying for the first module of the 5 module certification traject for becoming a SOA Certified Architect . What I like about the traject is that you have the option to go to workshops or order self study kits . The workshops can be followed also at the SOA Symposium in Rotterdam in october 2009. Furthermore the exams are based on the books of Thomas Erl a respected author in the SOA field. I have ordered the self study kit and it took a couple of weeks to arrive. It contains two reading materials, one handout of the presentation (fortunately with an audio CD) and one what to study and example questions (unfortunately just three). The audio CDs are a pain to listen to. It looks like generated from text with hardly any tonations. The best way for me was to read the SOA Principles of Service Design book. Tomorrow (4 sept 2009) is my exam for this first module. Keep you up-to-date about the level required. What I am curious about though is how this certification is seen

OSB 10.3.1 Database Adapter

Edwin Biemond wrote a great post on using the DB Adapter within OSB 10.3.1. You can find his article here and I followed the steps nicely. However I did not get it working. I made a mistake by giving the connection factory the same JNDI name as the JDBC Data Source! So please be aware of the JNDI traps.

How do you establish reliable Services?

I was wondering what kind of protocols/mechanisms/standards are used to establish reliable Services? Just to get started: * HTTP But this is by definition not reliable so some extra mechanisms are needed on API level. * JMS (Queues or Topics)? Is reliable but only used within Java technology. I like the Topic idea so that other components can listen on the Service entrance. * WS-ReliableMessaging It's a standard defined on top of SOAP, but which tools, platforms already use it? * Other? I am curious in your experiences!

Data integrity and transactions within SOA

I came accross this article about managing transactions within a SOA environment. There Vinay Singla mentions 4 techniques: 1) Perform the operations that support transactions before the operations that don’t support transactions (technique 2 can help) 2) Use compensating transactions (services must support compensating capabilities) 3) Break the transaction into multiple decoupled transactions 4) Execute the transaction as a long-running transaction Maybe you think of WS-Transaction and WS-Reliability but these standards have not yet been mature enough. Another technique not mentioned is the use of Functional/Technical maintenance. In this case when a step is not fulfilled, it will be send to a queue. This will be picked up by maintenance to correct the problem. I always fancy the most simple solution that decreases complexity for situations that may occur only once in a while, but this depends of course on the requirements.

Dynamic transformations in OSB 10gR3

Here is an interesting post from Chris about dynamic transformations within the OSB. It looks great, but think about this: You loose the strong typing of the messages the proxy can receive (as described in the blog itself). This may lead to faults that are difficult to trace because the service contract is in fact far more coarse grained. How about maintenance? I like the approach that for a different major version of a service with different XML data, use a different proxy. This way services of different versions can live together and services can become obsolete when clients are no longer using the old service. If you try to put all versions of the service in one proxy service it can soonly become unmanageable. But it can still be useful to have dynamic transformations.

Federated SOA

This week I had a discussion about a federated ESB and functional domains. It is widespread known that a CDM within an enterprise is hard to achieve and that's why the enterprise is divided in functional domains. However a common mistake often made, is that this division is done on a 1-by-1 mapping to the organisational divisions. Reasons I hear: * "Then we can make this department responsible for those processes" * ".. and those department is responsible for those systems/applications" This again is the silo-based concept of thinking. This division is furthermore also visible in the division of domains within the IT landscape (federated ESBs). But if there is one variable that often changes it will be the organisation. Also most processes will span multiple areas and it is very difficlut to keep that in one domain. However the business of the organisation and the functions the business must offer is more stable. So divide your SOA landscape on a functional basi

XQuery use within OSB, watch out!

I came accross an issue when using an XQuery resource within an assign. I could not see the binding variable, it turned out that the external variable within the .xq code was not used within the XQuery code. In this case the OSB does not show the variable! I entered the next code: Then I wanted to use this .xq within an Assign and opened the XQuery Expression Editor. However the Variable Binding (which is used to assign a value to the externally defined XQuery variable) is not shown: When I now actually use the external variable: The OSB now shows the variable: So watch out when tou are setting up the code, that you actually use the external variable otherwise the OSB does not show you the variable!

SCA Introduction

To get an overview of the possibilities of the Software Component Architecture (SCA) standard you should read this blog . Also Oracle supports the SCA standard . This standard let you define new components by using other components no matter which technology and protocol used. The wiring is done through configuration. Curious if this will be used a lot by the community! Note: The Oracle SOA Suite 11g does not contain the AquaLogic Bus, this is a separate product from Oracle.

CDM or not?

Again I am participating in a project that must decide to use a Canonical Data Model or not. In theory this is generally a good idea as already described by Wolf's Enterprise Integration Patterns . Does this also hold for a SOA? Yes when we must believe Thomas Erl, in fact it is one of his SOA pattern ( Canonical Schema ) We all know the advantages * Less transformation needed (this only holds when you have NxM relations) * Data reuse between Services within the same Service Inventory What do others say? Steve Jones describes three ways in his blog to setup a CDM . In Common demoninator (1) the minimum set of data that can be used to effectively communicate between areas on a consistent basis. The goal here isn't that this should be used on 100% of occasions but that it represents 70-80% of the interactions. In a Superset (2) the goal is to capture a canonical form that represents 100% of the possible interactions between services. Thus if a service might need 25 fields of pr

Soap over JMS W3C Recommendation

As you may know Soap over JMS is not a standard yet. W3C has just released W3C Candidate Recommendation SOAP over Java Message Service 1.0 which specifies how SOAP (both SOAP 1.1 and SOAP 1.2) should bind to a messaging system that supports the Java Message Service (JMS). If you do not want to read specifications this article on InfoQ might be a good starting point. Now it is waiting for our Vendors to support it.

Ken je Web Services standaarden!

De volgende tabel geeft een mooi overzicht van WS-* standaarden die gevolgd kunnen worden voor Web Services. Standaard Advies Alternatieven Orchestration BPEL WS-Choreography, WS-CDL Management WS-DistributedManagement, WS-Provisioning, WS-Management Security WS-Security WS-Trust, WS-Federation, WS-SecureConversation, WS-SecurityPolicy Transaction WS-Transaction, WS-Coordination WS-CompositeApplicationFramework (WS-CAF), WS-Context (WS-Ctx), WS-CoordinationFramework (WS-CF) Reliability WS-ReliableMessaging WS-Reliability Description WSDL, UDDI WS-Inspection, Disco, WS-Discovery, WS-PolicyFramework, WS-MetaDataExchange Messaging XML, SOAP WS-Addressing, WS-Notification, WS-ResourceFramework, WS-Eventing, WS-Policy, SOAP with Attachment Transport HTTP, JMS, RMI-IIOP TCP, UDP, Jabber, SMTP Interoperability WS-I Basic Profile Mochten er toevoegingen zijn, dan voel je vrij om een Comment te plaatsen.

SOA, EAI, BPM job trends

Op verschillende sites lees je dat de hype van SOA voorbij is. Dat geldt wellicht als marketing term, maar ik heb eens gezocht naar de vacatures die open staan. Op de site indeed.com kun je de job trends bekijken (in amerika). soa, eai ,bpm Job Trends soa jobs - eai jobs - bpm jobs Nederland heeft ook een site indeed.nl. Helaas laat die site niet de trendlijn zien. Maar dit geeft de volgende resultaten: SOA: 483 EAI: 230 BPM: 133 De hype is wellicht voorbij maar het momentum is daar voor SOA om zich als distributed computing platform te bewijzen.

Data Services

Het gebruik van Data Services (ook wel Entity Services genoemd) wordt goed uitgelegd in het volgende artikel: http://www.infoq.com/articles/narayanan-soa-data-services Als tip zou ik ook nog meegeven: kijk ook eens naar een REST interface!

Gaat SOA slagen?

Ik lees veel artikelen over het Service Oriented Computing paradigma. Ik heb OO zien "slagen", in die zin dat het wereldwijd omarmd wordt. Ik heb Component Based Development toch al een stuk minder zien slagen. SOA gaat weer een stapje verder (enterprise wide) en ik ben benieuwd of deze vorm van architectuur kunst gaat slagen. OO is nog goed te overzien omdat het vaak binnen een applicatie blijft. Met herbruikbare componenten werken binnen je afdeling of zelfs binnen de organisatie vergt toch een hele andere vorm van samenwerken. Ditzelfde geldt ook voor SOA. Er is niet voor niets zoveel te lezen over Governance . Net als de overgang van structured analysis/design (SA/SD) naar OO werd aangenomen dat dat alles zou oplossen. Dit is natuurlijk niet zo, je kunt er nog steeds een puinhoop van maken. Dit geldt ook voor de overgang naar een SOA, alleen dan nog een paar gradaties erger. Daarom denk ik dat het een zeer goede practice is om kleinschalig te beginnnen en eerst maar een