Saturday, February 26, 2011

How to setup a BPEL project in Carbon Studio from an existing BPEL artifact

Written by Denis Weerasiri


In this blog post is about how to setup a WSO2 Carbon Studio BPEL project from an existing BPEL artifact.
Suppose there's a BPEL process, and you need to edit it via WSO2 Carbon Studio. We can't directly open a BPEL process via Carbon Studio. First you need to create a BPEL project and import the BPEL process to that BPEL project.

How to create Carbon Studio BPEL project from an existing BPEL process
  • Start Eclipse Carbon Studio. Here you need to make sure you have installed Carbon Studio in Eclipse version you use.
  • In the menu bar goto File -> New -> Other -> BPEL Project . Then the following dialog will appear.

  • Click on Next. Then the following dialog will appear.

  • Add a Project name .Under Configuration click on Modify and put a check on BPEL 2.0 Facet. Click OK.


  • Then click Finish in “New BPEL Project” dialog box.
  • Now the Carbon Studio BPEL project has been created. And now we need to import the process files to this project.
  • For that; first extract a process we have provided. 
  • Then in Carbon Studio; Right click on the project in the “Project Explorer” Window -> Import... Then the following wizard will pop up. Choose “File System”, then click Next.


  • Then the following dialog will appear. And give the location of the previously extracted BPEL process in 7. Then add all the files in that BPEL process. Then Click on Finish.

  • Now the Carbon Studio project is created and you can edit the BPEL process via our editor.


How to deploy and run BPEL projects
  • In Carbon Studio goto File -> Export. Then in the appearing dialog choose "WSO2 BPS BPEL Artifact". Then export the project.
 
  • Add the created BPEL artifact to WSO2 BPS via Web UI.

See original post

Saturday, February 19, 2011

WSO2 Carbon Studio: Tools for WSO2 Middleware Platform

WSO2 is an open source middleware company with a complete and comprehensive SOA middleware platform which is well known as Carbon and a PaaS which is known as Stratos.  But without proper tools, developers who develop their own solutions based on these SOA middleware will not get maximum benefits of them. Therefore, tools can play a significant role in reaching new sights. WSO2 Carbon Studio plays this significant role for WSO2 Carbon stack and Stratos PaaS by allowing new developers to try and evaluate Carbon platform with ease and making tasks easier for existing users.  WSO2 Carbon Studio is a collection of Eclipse plugins which enhances Eclipse IDE functionalities by extending IDE features to support WSO2 Carbon products and Stratos  with many other SOA features. Therefore Eclipse users can download Carbon Studio install it on your Eclipse installation. We decided to use Eclipse because it is completely free and open source and it is the most popular and widely used Java IDE and it will allow us to reach a much wider audience than any other IDE.   Following are the features that are included in the latest Carbon Studio 1.0.4 release. Application Server ToolsCreate and Edit Apache Axis2 Web ServiceContract first (Top down approach) Code first (Bottom-up approach) Create WSDL for Apache Axis2 Web Service archive (aar file) Generate Web Service clientFrom aar file From WSDL Web ApplicationsCreate and edit web applications Test and debug Apache Axis2 Services and Web Applications Deploy Apache Axis2 services and web applications Deploy JAX-WS services Enterprise Service Bus ToolsView, Create and EditEndpoints Proxy Services Sequences Local Entries Create custom mediators Registry Referencing Test and debug custom mediators and other ESB artifacts Deploy custom mediators and other ESB artifactscontaining as hot deployable file containing as registry resource Governance Registry ToolsCreate and deploy registry resource artifactsfrom a local file or a folder Import from a registry or as a registry dump Create, edit, debug and deploy registry handlers and filters Registry ManagementWorking with a registry onlineAdding multiple remote registries at once View, add, edit and delete registry resources and collections Import (drag-drop) resources from registry and file system View, add, edit and delete Properties, Associations, Dependencies, Comments and Tags Modify permission of a resource or collection Easily modify resources through configured Eclipse editors Check-out registry content to Eclipse workspace Working with a registry in the offline modeAdd resources in Eclipse workspace to the registry Add, modify and delete checked-out resources in the workspace and commit the changes back Sync the checked-out resources with the online registry User ManagementAdd, modify and delete users Modify the permissions of a given role Modify permission for a selected registry resource Business Process Server ToolsView, create and edit BPEL projects Test and deploy BPEL artifacts Gadget Server ToolsCreate and edit gadgets Test and deploy gadget artifacts Data Services Server ToolsCreate and edit data services (XML configurations) Create and edit data services validators Test and deploy data services artifacts and data services validators Carbon ToolsCreate, edit, debug and deploy Carbon UI bundles Deploy third party libraries as bundles Test and deploy data service artifacts and data service validators The recommended configuration for WSO2 Carbon Studio is as follow. 1. Eclipse Helios (3.6) or Helios SR1 (3.6.1) for Java EE developers.2. Oracle JDK 1.63. Any Operating System4. Around 100Mb of Hard Disk space In order to install Carbon Studio, there are 2 methods of doing that. You can follow any of them according to your preference. 1. Offline installation via Downloaded WSO2 Carbon Studio P2 features- If you prefer download first and install later, this option is for you.2. Online installation via WSO2 P2 feature repository

See original post

Tuesday, February 15, 2011

Tools for Developers who want to use SOA Middleware

Written by Sami

The WSO2 Carbon Studio is a complete, Eclipse-based SOA development environment, consisting of a broad set of development tools for developing Services, Clients and other related SOA artifacts for your SOA.

You can develop SOA applications using wide array of artifacts with WSO2 Carbon Studio.

The full list of WSO2 Carbon Studio features include:

Application Server Tools

  1. Create and edit Apache Axis2 Web service
    • Contract first (Top-down approach)
    • Code first (Bottom-up approach)
  2. Create WSDL for Apache Axis2 Web service archive (aar file)
  3. Generate Web service client
    • From aar file
    • From WSDL
  4. Web Applications
    • Create and edit web applications
  5. Test and debug Apache Axis2 services and Web applications
  6. Deploy Apache Axis2 services and web applications
  7. Deploy JAX-WS services

Enterprise Service Bus Tools

  1. View, create and edit
    • Endpoints
    • Proxy Services
    • Sequences
    • Local Entries
  2. Create custom mediators
  3. Registry referencing
  4. Test and debug custom mediators and other ESB artifacts
  5. Deploy custom mediators and other ESB artifacts
    • Containing as hot deployable file
    • Containing as registry resource

Governance Registry Tools

  1. Create and deploy registry resource artifacts
    • from a local file or a folder
    • Import from a registry or as a registry dump
  2. Create, edit, debug and deploy registry handlers and filters
  3. Registry management
    • Working with a registry online
      • Adding multiple remote registries at once
      • View, add, edit and delete registry resources and collections
      • Import (drag-n-drop) resources from from registry and file system
      • View, add, edit and delete properties, associations, dependencies, comments and tags
      • Modify permission of a resource or collection
      • Easily modify resources through configured eclipse editors
      • Check-out registry content to eclipse workspace
    • Working with a registry in the offline mode
      • Add resources in Eclipse workspace to the registry
      • Add, modify and delete checked-out resources in the workspace and commit back changes
      • Sync the checked-out resources with the online registry
    • User management
      • Add, modify and delete users
      • Modify permissions of a given role
      • Modify permission for a selected registry resource

Business Process Server Tools

  1. View, create and edit BPEL projects
  2. Test and deploy BPEL artifacts

Gadget Server Tools

  1. Create and edit gadgets
  2. Test and deploy gadget artifacts

Data Services Server Tools

  1. Create and edit data services (XML configurations)
  2. Create and edit data services validators
  3. Test and deploy data service artifacts and data service validators

Carbon Tools

  1. Create, edit, debug and deploy Carbon UI bundles
  2. Deploy third party libraries as bundles
  3. Test and deploy data service artifacts and data service validators

See original post

Monday, February 14, 2011

Interesting, but unsolved error when building Apache Axiom

Written by Amila Maharachchi

These days I was busy with getting the WSO2 Carbon trunk building successfully. While working on it, I encountered an interesting build failure when building Apache Axiom with tests.

Lets think, the Carbon trunk's structure is as follows.


Carbon
|--Dir1
|--Axiom
|--dirX
|--dirY
|--Dir2
|--Dir3

If I go to the Axiom folder and build it with tests, it builds successfully. But, if I stay in Dir1 (i.e. the parent directory which Axiom is in) and give the maven command to build all modules in Dir1 (with tests), I get this error. This seems to happen when building the Axiom OSGI Test Suite.


-------------------------------------------------------
T E S T S
-------------------------------------------------------
The current artifact axiom-osgi-run-1.2.12-SNAPSHOT.jar is not a valid bundle
Running org.apache.axiom.test.ServiceTest
Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0 sec
[FATAL ERROR] org.apache.felix.ipojo.junit4osgi.plugin.Junit4osgiPlugin#execute() caused a linkage error (java.lang.LinkageError) and may be out-of-date. Check the realms:
[FATAL ERROR] Plugin realm = app0.child-container[org.apache.felix:maven-junit4osgi-plugin:1.0.0]
urls[0] = file:/home/amila/.m2/repository/org/apache/felix/maven-junit4osgi-plugin/1.0.0/maven-junit4osgi-plugin-1.0.0.jar
urls[1] = file:/home/amila/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
urls[2] = file:/home/amila/.m2/repository/org/apache/felix/org.apache.felix.framework/1.6.1/org.apache.felix.framework-1.6.1.jar
urls[3] = file:/home/amila/.m2/repository/org/apache/felix/org.osgi.core/1.2.0/org.osgi.core-1.2.0.jar
urls[4] = file:/home/amila/.m2/repository/org/apache/felix/org.osgi.compendium/1.2.0/org.osgi.compendium-1.2.0.jar
urls[5] = file:/home/amila/.m2/repository/org/apache/felix/org.osgi.foundation/1.2.0/org.osgi.foundation-1.2.0.jar
urls[6] = file:/home/amila/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
urls[7] = file:/home/amila/.m2/repository/org/apache/felix/org.apache.felix.ipojo/1.2.0/org.apache.felix.ipojo-1.2.0.jar
urls[8] = file:/home/amila/.m2/repository/org/apache/felix/org.apache.felix.ipojo.metadata/1.2.0/org.apache.felix.ipojo.metadata-1.2.0.jar
urls[9] = file:/home/amila/.m2/repository/org/apache/felix/org.apache.felix.ipojo.handler.extender/1.2.0/org.apache.felix.ipojo.handler.extender-1.2.0.jar
urls[10] = file:/home/amila/.m2/repository/org/apache/felix/org.apache.felix.ipojo.junit4osgi/1.0.0/org.apache.felix.ipojo.junit4osgi-1.0.0.jar
urls[11] = file:/home/amila/.m2/repository/net/sourceforge/cobertura/cobertura/1.9/cobertura-1.9.jar
urls[12] = file:/home/amila/.m2/repository/oro/oro/2.0.8/oro-2.0.8.jar
urls[13] = file:/home/amila/.m2/repository/asm/asm/2.2.1/asm-2.2.1.jar
urls[14] = file:/home/amila/.m2/repository/asm/asm-tree/2.2.1/asm-tree-2.2.1.jar
urls[15] = file:/home/amila/.m2/repository/log4j/log4j/1.2.9/log4j-1.2.9.jar
urls[16] = file:/home/amila/.m2/repository/org/apache/ant/ant/1.7.0/ant-1.7.0.jar
urls[17] = file:/home/amila/.m2/repository/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar
urls[18] = http://felix.extensions:9/
[FATAL ERROR] Container realm = plexus.core
urls[0] = file:/media/dev/software/apache-maven-2.1.0/lib/maven-2.1.0-uber.jar
urls[1] = file:/home/amila/.m2/repository/org/apache/maven/archetype/archetype-packaging/2.0-alpha-4/archetype-packaging-2.0-alpha-4.jar
urls[2] = file:/home/amila/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] loader constraint violation: loader (instance of org/codehaus/classworlds/RealmClassLoader) previously initiated loading for a different type with name "org/codehaus/plexus/util/xml/XMLWriter"
[INFO] ------------------------------------------------------------------------
[INFO] Trace
java.lang.LinkageError: loader constraint violation: loader (instance of org/codehaus/classworlds/RealmClassLoader) previously initiated loading for a different type with name "org/codehaus/plexus/util/xml/XMLWriter"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at org.codehaus.classworlds.RealmClassLoader.loadClassDirect(RealmClassLoader.java:195)
at org.codehaus.classworlds.DefaultClassRealm.loadClass(DefaultClassRealm.java:255)
at org.codehaus.classworlds.RealmClassLoader.loadClass(RealmClassLoader.java:214)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at org.apache.felix.ipojo.junit4osgi.plugin.XMLReport.generateReport(XMLReport.java:194)
at org.apache.felix.ipojo.junit4osgi.plugin.Junit4osgiPlugin.executeTest(Junit4osgiPlugin.java:573)
at org.apache.felix.ipojo.junit4osgi.plugin.Junit4osgiPlugin.invokeRun(Junit4osgiPlugin.java:447)
at org.apache.felix.ipojo.junit4osgi.plugin.Junit4osgiPlugin.execute(Junit4osgiPlugin.java:253)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:356)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 minutes 7 seconds
[INFO] Finished at: Sat Feb 12 23:44:07 IST 2011
[INFO] Final Memory: 233M/964M


Several other people have encountered this problem, but I didn't see a solution for this. If you know the reason for this, please add a comment. It will be very helpful :).

See original post

Friday, January 28, 2011

Create Business Processes, Human Tasks, with many other features

Written by Denis Weerasiri


Suppose you need to write a business process/human task with some quality of service features like security, throttling caching etc. Or suppose you need inject ESB characteristics like service mediation, routing, load balancing, message enrichment etc. to incoming and outgoing message sequences.
Now what if you can do all these stuff with one server instance without using different products for different requirements, isn't it great?
WSO2 Carbon is capable on this due to its component architecture. Not only that you can do these stuff using Carbon UI very easily.
Due to WSO2 Carbon's OSGi based component architecture, you can customize WSO2 products based on your requirements.

Here I'm writing about how those stuff can be done in a very high level.

1. Security, Caching, Throttling to Business processes/Human tasks.
WSO2 BPS is inherently support this, and you can use the BPS Web UI to configure, monitor and maintain business processes with these features. The more interesting thing is; the whole set of WSO2 carbon products, have this unique interface. So once you get familiar with one product, you can use other products very easily. As an example, to enable throttling to service mashup, data service or SOAP service etc, user sees an unique interface.

Here are some screen-shots of the service dashboard.

Main service dashboard

Security configuration

Throttling configuration

Caching configuration

Try-it configuration


2. How to embed ESB like features
How to install ESB features - To use WSO2 ESB features what you need to do is install ESB related features to BPS. But I would prefer install BPS features into ESB as the number of BPS features are less than ESB features. As any WSO2 product is a set of OSGi components; there is no any difference in installing BPS features to ESB product and installing ESB features to BPS product.

Here is a screen-shot of feature management page


Now if you are already familiar with WSO2 ESB; using ESB features on business processes/ human tasks is no different from using ESB features on any other service.
eg - writing a proxy service for a business process and use message mediation in in-sequence and out-sequence. etc

See original post

Tuesday, January 18, 2011

SSL Debugging - Part - II - Intercepting traffic between WSO2 Carbon FE and BE

All WSO2 products are based on WSO2 Carbon, which sits as the core for all of them.

We do have a clear Front-End [FE], Back-End [BE] separation - where the FE web application talks to the BE, via web service calls.

This benefits the end user - which adds the flexibility of developing his own client to the corresponding back end functionality in a language independent manner.

All UI components you see in the default distribution talk to the BE services via SOAP over HTTPS.

In case of digging in to an issue - since this is on HTTPS - it's hard to intercept the communication channel and figure what exact messages being passed from FE to BE.

This is how you can do it - to intercept messages flowing over SSL.

Prerequisites:
1. ssldump
2. The private key of WSO2 Carbon, in PEM format - you can download it from here.

Run the following command from where you have the private key, and start any WSO2 Carbon based product - say on HTTPS port 9443

:\> sudo ssldump -Ad -k wso2carbon.pem -p wso2carbon -i lo0 host localhost and port 9443

Make sure to have the correct interface set as per your system.[-i lo0] and start the ssldump before you start the server.

Now you can track all the messages between FE and BE in clear text.
1 8 0.0621 (0.0007) C>SV3.1(203) application_data
---------------------------------------------------------------
POST /services/AuthenticationAdmin HTTP/1.1
Content-Type: application/soap+xml; charset=UTF-8; action="urn:login"
User-Agent: Axis2
Host: localhost:9443
Transfer-Encoding: chunked

---------------------------------------------------------------
1 9 0.0626 (0.0005) C>SV3.1(399) application_data
---------------------------------------------------------------
173
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<ns1:login xmlns:ns1="http://authentication.services.core.carbon.wso2.org">
<ns1:username>admin</ns1:username>
<ns1:password>admin</ns1:password>
<ns1:remoteAddress>0:0:0:0:0:0:0:1%0</ns1:remoteAddress>
</ns1:login>
</soapenv:Body>
</soapenv:Envelope>
0

---------------------------------------------------------------
1 10 0.2071 (0.1445) S>CV3.1(544) application_data
---------------------------------------------------------------
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=37FC902E5E7C6C0D081E28B4DF067A76; Path=/; Secure
Content-Type: application/soap+xml;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 19 Nov 2010 02:44:26 GMT

11f
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<ns:loginResponse
xmlns:ns="http://authentication.services.core.carbon.wso2.org">
<ns:return>true</ns:return>
</ns:loginResponse>
</soapenv:Body>
</soapenv:Envelope>

See original post

Wednesday, November 24, 2010

Debug Carbon server when it is started as a daemon

Written by Heshan Suriyaarachchi

WSO2 Carbon Server can be run as a daemon on Unix/Linux systems. Say for instance that you need to remote debug the server when it is started as a daemon. This blogpost will be discussing $subject.

1) Open up the wrapper.conf file.

heshan@heshan-ThinkPad:~/Dev/customer/wso2esb-3.0.1/bin$ vim ../repository/conf/wrapper.conf

2) Add following entries to the wrapper.conf.

wrapper.java.additional.20=-Xdebug
wrapper.java.additional.21=-Xnoagent
wrapper.java.additional.22=-Djava.compiler=NONE
wrapper.java.additional.23=-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005

3) Start the ESB as a daemon.

heshan@heshan-ThinkPad:~/Dev/customer/wso2esb-3.0.1/bin$ ./wso2server.sh start
Starting WSO2 ESB v3.0.1...

4) Start the debugger.

5) Monitor the log.

heshan@heshan-ThinkPad:~/Dev/customer/wso2esb-3.0.1/bin$ tail -f ../repository/logs/wrapper.log
INFO | jvm 1 | 2010/11/24 11:35:09 | object space 84224K, 76% used [0x00007fbfcff20000,0x00007fbfd3e0dff0,0x00007fbfd5160000)
STATUS | wrapper | 2010/11/24 11:35:09 | <-- Wrapper Stopped STATUS | wrapper | 2010/11/24 11:45:46 | --> Wrapper Started as Daemon
WARN | wrapper | 2010/11/24 11:45:46 | ------------------------------------------------------------------------
WARN | wrapper | 2010/11/24 11:45:46 | The JVM is being launched with a debugger enabled and could possibly be
WARN | wrapper | 2010/11/24 11:45:46 | suspended. To avoid unwanted shutdowns, timeouts will be disabled,
WARN | wrapper | 2010/11/24 11:45:46 | removing the ability to detect and restart frozen JVMs.
WARN | wrapper | 2010/11/24 11:45:46 | ------------------------------------------------------------------------
STATUS | wrapper | 2010/11/24 11:45:46 | Launching a JVM...
INFO | jvm 1 | 2010/11/24 11:45:46 | Listening for transport dt_socket at address: 5005
INFO | jvm 1 | 2010/11/24 11:45:56 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2010/11/24 11:45:56 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
INFO | jvm 1 | 2010/11/24 11:45:56 |
INFO | jvm 1 | 2010/11/24 11:45:56 | [2010-11-24 11:45:56,845] INFO - Main Initializing system...

Now you have successfully debugged the Carbon Server, when it is started as a daemon.

See original post

 

Copyright 2009 All Rights Reserved Revolution Two Church theme modified by Milinda Pathirage