Moving
This blog is moving to http://chamerling.wordpress.com/ (articles have been migrated) but is still syndicated to eBM WebSourcing Blogs at http://blog.ebmwebsourcing.com/home/
This blog is moving to http://chamerling.wordpress.com/ (articles have been migrated) but is still syndicated to eBM WebSourcing Blogs at http://blog.ebmwebsourcing.com/home/
Mac OS X is cool but where are my special characters I need while developing??? Here are some keys combinations which are (quite) useful :
Here are a serie of tips when developing under Mac OS X after mostly 8 years in the Linux word.
First tip : The aliases in the Terminal (because I really think that the Terminal is cool
) )
1. Create a .profile file in your $HOME folder
cd $HOME
touch .profile
2. Add aliases in this .profile file
pico .profile
and then syntax is alias foo=’bar’. For example, here are some of my aliases :
alias tx=’open /Applications/TextEdit.app/’
alias mvn2=’/Users/chamerling/Developpement/bin/mvn/apache-maven-2.0.10/bin/mvn’
alias meclipse=’mvn2 eclipse:eclipse’
alias mpetals=’mvn2 archetype:generate -DarchetypeCatalog=http://petals.ow2.org’
I was offline for the past 3 weeks since my first son, Loris, was born on January 27th at 4:55 am. Even if I am very tired, this is a really extraordinary experience and I am back!
This blog entry is about how to use the OW2-Dragon SOA Governance with the OW2-PEtALS ESB.
Thanks to the flexible Fractal architecture PEtALS is based on, I have implemented the Dragon API and integrated it into a custom PEtALS distribution.
Here are some screenshots of my tests, I used the JSR181 Service Engine (based on PEtALS CDK and Axis2) to ‘quickly’ create a collection of JBI services with real WSDL descriptions which will be used in Dragon.
All the resources needed (PEtALS, Dragon and JBI artifacts) and their download links are listed at the bottom of this article.
At startup, PEtALS exposes the Dragon API implementation as a web service at http://localhost:9001/petals/ws/DragonService. This address is the one which as to used to fill the ‘Add Runtime Manager’ Dragon section.
Figure 2 – Sysnchronize execution environments
I just did a quick test and try to search all the services which have an operation which starts by ‘get’. Going to the ‘Search Service’ section and entering ‘get*’ in the search field returns me a list of compliant services.
Resources
The Dragon Web Application : http://download.forge.objectweb.org/dragon/dragon-0.9.1.war
The PEtALS-Dragon Enabled standalone distribution : http://maven.objectweb.org/maven2-snapshot/org/ow2/petals/petals-standalone-dragon/1.0-SNAPSHOT/petals-standalone-dragon-1.0-20090116.150059-1-light.zip
The JSR181 Service engine : http://maven.objectweb.org/maven2-snapshot/org/ow2/petals/petals-se-jsr181/1.1-SNAPSHOT/petals-se-jsr181-1.1-20090116.152803-72.zip
The Service Assembly : http://maven.objectweb.org/maven2-snapshot/org/ow2/petals/su/jsr181/sa-jsr181-collection/1.0-SNAPSHOT/sa-jsr181-collection-1.0-20090116.151044-1.zip
Here are the latest PEtALS releases :
Get all of this stuff on http://petals.ow2.org
Here is a tip on the PEtALS JSR181 Service Engine (which is also available for all JSR181 annotated classes outside of PEtALS).
Today, I spent some time on a customer bug which was not really a bug… I was quite surprising when he said me that he was unable to get its annotated class working on the component. The error was at instantiation time (first JBI message handling) :
org.apache.axis2.AxisFault: The service is unable to load the foo.bar.Service service implementation class. at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) at org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:220) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176) at org.ow2.petals.se.jsr181.JBIListener.onJBIMessage(JBIListener.java:120) at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.processInOutAsProvider(MessageExchangeProcessor.java:524) at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.processAsProvider(MessageExchangeProcessor.java:421) at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.process(MessageExchangeProcessor.java:308) at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.run(MessageExchangeProcessor.java:145) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619) Caused by: javax.xml.ws.WebServiceException: The service is unable to load the org.ow2.petals.usecase.jsr181.TestService service implementation class. at org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:173) at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70) at org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:118) at org.apache.axis2.jaxws.server.endpoint.lifecycle.impl.EndpointLifecycleManagerImpl.createServiceInstance(EndpointLifecycleManagerImpl.java:242) at org.apache.axis2.jaxws.server.endpoint.lifecycle.impl.EndpointLifecycleManagerImpl.createServiceInstance(EndpointLifecycleManagerImpl.java:94) at org.apache.axis2.jaxws.server.ServiceInstanceFactoryImpl.createServiceInstance(ServiceInstanceFactoryImpl.java:49) at org.apache.axis2.jaxws.server.EndpointController.handleRequest(EndpointController.java:253) at org.apache.axis2.jaxws.server.EndpointController.invoke(EndpointController.java:98) at org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:159) … 9 more
So what? I launched PEtALS in debug mode, and going step by step until the foo.bar.Service class instantiation. ‘Hey what’s up InstanciationException?’.
This is simply because the foo.bar.Service class contains constructors and not the empty one!
The solution is to remove all the constructors which are not very usefull here (since they can not be used), or add an empty constructor. Now it works!