Not a valid Win32-Application
Last week i encountered a problem with my glassfish installation while preforming a deployment with maven.
In my maven i configured the maven-glassfish-plugin and tried to deploy my application. I received the following message:
[INFO] Unable to start domain "webui". IOException: Cannot run program "C:\prog\glassfishv3\glassfish\bin\asadmin": Crea
teProcess error=193, %1 is not a valid Win32-Application
The plugin tries to execute in my glassfish installation the application asadmin. In this directory there are to files with this name. a windows version with the .bat extension and a unix version without a extension. To solve this problem delete or rename the file without an extension to asadmin.sh. Now windows will send the request to the bat file.
Unable to deploy application
After i solved this issue i encountered a second problem. I configured the plugin to use the passwordfile that’s generated in the domain config.
<groupId>org.glassfish.maven.plugin</groupId>
<artifactId>maven-glassfish-plugin</artifactId>
<version>2.1</version>
<configuration>
<glassfishDirectory>${glassfishDirectory}</glassfishDirectory>
<user>${glassfish-user}</user>
<passwordFile>${passwordFile}</passwordFile>
<debug>true</debug>
<echo>true</echo>
<domain>
<name>${project.artifactId}</name>
<adminPort>4848</adminPort>
</domain>
<components>
<component>
<name>${project.artifactId}</name>
<artifact>${project.build.directory}/${project.build.finalName}.war</artifact>
</component>
</components>
</configuration>
This works to start and stop the domain but for deploying an application it doesn’t accept the password file. To solve this problem i created a personal password file in my userhome containing the password of my domain in this case ‘admin’ and changed in my settings.xml the value of passwordFile to my personal password file:
here the configuration in my settings.xml
<properties>
<!-- Glassfish -->
<glassfishDirectory>C:/prog/glassfishv3/glassfish</glassfishDirectory>
<passwordFile>${user.home}/passwd.local.file</passwordFile>
<glassfish-user>admin</glassfish-user>
<userPassword>admin</userPassword>
</properties>
here the content of my passwd.local.file
AS_ADMIN_PASSWORD=admin
Posted March 22nd, 2010 by Theo van Arem | No Comments »
After completing a migration of a GIS Application to 11g database i was wondering how difficult it could be to integrate Oracle Maps on a APEX page.
I have installed the following components:
upgraded the SQL Developer to version 2.1 and installed the GeoRaptor plugin to visualize oracle spatial data
Step 1: “Validate Demo Data and working of GeoRaptor”
Step 2: “Validate Working of MapViewer jsp client”
Step 3: “Validate Working of MapViewer JavaScript client”
Step 4: “Include the JavaScript client in APEX page”
Read the rest of this entry »
Posted January 7th, 2010 by Theo van Arem | 1 Comment »
Today i was using utl_http package on my 11g db and I encountered the following error:
ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1577
ORA-24247: network access denied by access control list (ACL)
ORA-06512: at line 1
His is the result of the improved security in 11g. When you want to create a connection to a remote server with one of the util packages: TCP,HTTP,SMTP besides the privileges on the package you need to configure the connection in a Access Control List (ACL). In a ACL you can configure in detail the allowed connections by entering the following parameters:
- Server name or IP
- Port number range
- Database user/role
- Start date
- End date
The package DBMS_NETWORK_ACL_ADMIN enables you to create and configure ACL’s.
The ACL is a nice security feature but when migrating applications to 11g it’s something you will encounter.
More information:
Posted December 30th, 2009 by Theo van Arem | No Comments »
The configuration of the fault management Framework for a SCA component has been made more flexible than it was in 10g. We can configure fault policies not only on composite level but also on component level. This enables us to configure retry policies not only on an error type and filter but also on specific components. To do this you just need two files:
You have to enable the fault policy by adding the files to your sca component, or you can add a reference in the sca component to hem, for example when they are placed in the mds.
fault-bindings.xml
Examples of fault-bindings.xml files can be found in oracle’s documentations:
fault-policies.xml
An detailed fault-policies.xml file can be found here.
Mediator
The Fault Management Framework is only applicable for mediators that processes their rules parallel, see documentation Fault Policies Mediator. If an error is matched in the fault policy an possible predefined fault action in the mediator will be ignored. Be aware of this when you are defining your fault policies and error handling.
Example
I have made a simple sca component to show the working of the framework. This sca component has two components {BPEL and Mediator} which are exposed as services to the outside world.
Read the rest of this entry »
Posted December 10th, 2009 by Theo van Arem | 19 Comments »
Today i took a look at the test framework withing the 11g suite. I encountered a strange problem in the test framework of the SOA Suite but before i go into details i will explain the case.
I have made the following sca component that returns a greeting. The input is quite simple a name and a greeting type (‘Hello’ or ‘Bye’). The message is routed depending on the greeting type to a BPEL which response the greeting with a return greeting.
Read the rest of this entry »
Posted December 3rd, 2009 by Theo van Arem | 2 Comments »
As many of you may know, I’m a big fan of collaboration. I think we all have enough challenges building solutions for our customers, that we all benefit from any kind of collaboration. One such collaboration is the WAAI project. The WAAI acronym is formed by using the first letter of each participating company, being: Whitehorses, Amis, Approach Alliance and – of course – IT-eye.
The way we work is quite simple: every quarter we decide upon what questions we want to have answered. As you can imagine, SOA Suite 11g is quite prominent there. Each and every question has to be answered by delivering a workshop, white paper or presentation. These are collected and presented to an audience consisting of people from the participants. That way we not only build the knowledge, but spread it within our companies as well. And, all of us can use that material to train others, both inside and outside of the companies.
Usually the results are qualitatively really good. Some are extremely good. Such a one has just been posted on OTN, which is a nice feat anyway. You can find the article Jumpstart for OSB development here. We look forward to share a lot more results in the future.
Posted November 6th, 2009 by Mike van Alst | No Comments »
JaValid 1.2 has been released today. To see what has changed check the release notes.
You can download the new release from sourceforge. Also check out the documentation for all new features and how to upgrade to the latest release.
Please send feedback to: feedback at javalid dot org or post on this thread. Thanks!
For more information visit: http://www.javalid.org
Have fun with the new release!
Posted May 9th, 2009 by Martijn Reuvers | No Comments »
I am proud to announce that JaValid 1.2 release candidate 1 has been released today. Quite some changes have been put into this release of which the following are the most interesting:
* Introduction of a new type of validation annotations on class level, including several of these annotations (@NotNullAll, @NotNullOrNullAll etc)
* Added automatic resolving of messages (for user feedback) if needed
* Added new date validation annotations (e.g. @DateBefore, @DateAfter)
* Configuration minimized, annotations are registered by default now (for core and extensions)
* Added Spring AnnotationValidatorBeanPostProcessor (contributed by Scott Battaglia) which allows for validation of Spring Beans in an automated way.
* Advanced caching introduced (introspection is done only once when objects are encountered the first time), this improves speed.
* @JvGroup is not required anymore, only if you need more complex validation with multiple groups
* Core rewritten to allow more advanced validation features in the future
A lot more has changed than what is listed above, check the release notes for this.
You can download the new release from sourceforge. Also check out the documentation for all new features and on how to upgrade to the latest release.
For details please visit http://www.javalid.org
Posted March 14th, 2009 by Martijn Reuvers | No Comments »
From the Oracle forum and from the comments on my article about Oracle BPEL Fault Policy Management i get a lot of questions about how to let the framework handle my own custom defined ‘business faults’.
In certain situations the default set of faults defined by Oracle aren’t suited enough and you need to define your own faults.
If we look into the examples which got supplied by Oracle we can see an example over here. In this example they defined their own NegativeCredit-fault.
The Oracle BPEL Fault Policy Framework by default only handles the faults which are getting returned on an invoke-activity.
So we have our own custom fault and the knowledge we can only let this fault getting catched by the framework by use of an invoke.
So we need atleast for this testscenario 2 bpel processes. One mainprocess which calls a subprocess, and this subprocess will throw the custom business fault.
This fault will get propogated back to the mainprocess and in here we will be able to let the framework handle the fault.

BPEL Processes
Mainprocess

Subprocess

Just a simple invoke of the subprocess from the mainprocess. The subprocess with throw a fault, and this fault will be catched in the mainprocess.
The fault to be thrown
From the console start the mainprocess and wait till it comes back with a fault message

Click the activity to see the thrown fault
[2009/02/13 16:24:41]
"{http://nl.iteye/integration/faults/business}BusinessFault" has been thrown.
<businessfault xmlns="http://nl.iteye/integration/faults/business">
<part name="payload">
<businessfault xmlns="http://nl.iteye/integration/faults/business">
<faultcode>999</faultcode>
<faultmessage>Something went wrong!</faultmessage>
</businessfault>
</part>
</businessfault>
Ok nice!
So the custom fault we defined in the subprocess reaches the mainprocess.
Now we need to config the fault policy framework so it will get active on our custom business fault.
From the fault we pasted above we need the faultname (BusinessFault) and the namespace (http://nl.iteye/integration/faults/business).
Edit /bpel/domains/default/config/fault-policies/DefaultPolicy.xml and add the next fault :
<faultname xmlns:flt="http://nl.iteye/integration/faults/business" name="flt:BusinessFault">
<condition>
<action ref="ora-human-intervention"/>
</condition>
</faultname>
For testing we will just let this fault getting handled by human-intervention.
Now restart the components
opmnctl stopall
opmnctl startall
Now start the mainprocess again and wait till it fails.

It looks like the framework got active (activity yellow marked) on our custom business fault.

Go to the activities-tab

And click the activity which faulted.

Now we can edit some of the values and let the subprocess get re-invoked.
So, at this moment we’re able to throw our custom business faults and let them getting catched by the framework.
Since the fault is only getting catched on the invoke of a partnerlink, we aren’t able to let our custom business fault getting throwned to the process in which we maybe want do something with the data for which we actually throwed the custom business fault.
So maybe we want to stay in the subprocess and somehow get the custome business fault thrown inhere, let the framework catch it and update the values of this subprocess with new values an re-execute the subprocess.
The next solution will get this done.
The mainprocess won’t get changed but in the subprocess we will invoke a new process called AllBusinessFaults.
New subprocess 2

AllBusinessFaults

The AllBusinessFaults will throw the custom business fault we ‘request’ back on the invoke in this subprocess. Now it wil get catched by the framework and we will be able to change the values of the subprocess instead of the mainprocess.

By using the AllBusinessFaults bpel service like a sort of composite service, we can add the custom business faults in it and throw the one we would like to get thrown.
This will work if the collection of custom business faults isn’t that big.
I’m sure there will be better solutions for this, but for the scenario i wanted to describe in here it was good enough for me.
Question
In the examples i provided i don’t use the fault-part of a synchronous invoke to propegate the soap-fault back to the caller, i just throw the fault. The bpel engine itself throws the fault back to the first-level. Whats best practice on this one ?
Sources
BPEL Sources (First part of article with mainprocess/subprocess)
BPEL Sources (Second part of article with mainprocess/subprocess/allbusinessfaults)
Resources
Oracle BPEL 10.1.3.3 Fault Policy Management
my blog
Posted February 14th, 2009 by Eric Elzinga | 5 Comments »
I’m currently working on a proof of concept for testing the mule esb for a local goverment.
It’s a nice case to become familiar with a new esb since i mostly did my development on the Oracle ESB/ALSB.
Good too see some differences in concepts/techniques and connectivity and what the open source world has to offer for service busses.
Though the mule-source.org gives me some nice documentation/examples, i couldn’t find any updated information about development in some ide.
I already noticed Mule-IDE, but this version wasnt really actively updated, till i noticed a new update on this blog today. Though you can get most work done by running some mule maven archetype and eclipse for the editting of the xml/java, i’m still curious if the ide gives some extra functionality.
Information
Download
Screencast
Will check it out to see if it’s usefull for my mule development.
I will mirror a few of my posts from my own blog which can be found overhere.
Posted February 12th, 2009 by Eric Elzinga | No Comments »