wso2 carbon - deploy to servicemix / fuseesb - wso2

My company has decided on fuseesb as their ESB platform. However, some of the carbon functionality would be useful to us. For example, the carbon components provide a nice structure for creating backend service components and front end ui components. Would it be possible to deploy carbon on top of an existing karaf/felix based container such as fuseesb?

Yes this is possible. We ourselves have successfully deployed carbon on top of Karaf runtime some-time ago.
If you are using Carbon 4.x.x then to expose HTTPService you can use the default shipped tomcat bundle. If you are using Carbon 3.x.x then you have to use Jetty OSGi bundle(not shipped by default) to get the HTTPService in your runtime.
Just to give an idea, Carbon uses embedded tomcat as the servlet container. All the admin services call usually depends on servlet transport (there can be exceptions).
All in all, you can do this, but keep in mind that this is a advanced usage of carbon and ClassLoading issues are on your way and you have to solve those. :)
HTH

Related

limitations of running WSO2 Carbon 4.x and WSO2 Carbon based products in webapp mode?

WSO2 Carbon is not officially supported in webapp mode (see the selected answer here). However, I have no choice - If I want to run carbon, it must be run in webapp mode.
There are some detailed instructions here for setting up carbon 4.x in webapp mode.
I am concerned is that standalone mode is strongly recommended by WSO2.
My Questions are: What are the limitations:
when running Carbon 4.x in webapp mode?
when running other Carbon based products (e.g. ESB, AS, etc) in webapp mode?
If possible, please provide a detailed list of the limitations.
Limitations:
When you take the ESB, as you might have seen it exposes ports 8280/8243 (HTTP/HTTPS) in addition to 9763/9443 which is exposed through the servlet transport. In the case of ESB you need (and want) to use port 8280/8243 when you're interacting with the ESB because those are the two non-blocking high performant transports. When you deploy ESB on top of another web container, you're limited by the servlet transports provided by the container. So we can't get the desired performance out of the ESB for proxying and other scenarios.
Complexities involving using web container functionalities. Carbon has its own clustering/caching/security etc... infrastructure. When you deploy Carbon as a webapp then we should look at supporting all those functions provided by the container for different containers. Which is complex, not consistent and in some cases sub-optimal
IMHO those were the two most important factors why it's discouraged to deploy Carbon on top of other containers. Going with a standalone deployment approach it has contributed immensely to not include web container specific "hacks" into the platform to get things done and have a much cleaner consistent platform.
One issues with deploying Carbon in web-app mode is that this deployment model is not supported by WSO2. I will add more issues to this answer as I encounter them...
AFAIK, webapp is not supported... Please refer this thread :Running WSO2 Carbon as Web Application in Tomcat
Regards,
Mohan

does fuseesb have a similar UI framework concept to wso2 carbon?

I've been looking at WSO2 Carbon as an OSGi application platform providing the following functionality:
Services can be deployed as OSGi components (backend and frontend/UI)
A Service UI components can be hosted (snapped) into the Carbon UI
A Service can use Carbon User Management database for authentication and authorization
Does fuseesb have a similar UI concept?
Using fuse ESB for about 6 months, I'm very happy with it.
Services are easily deployed as OSGi components - these are quite easily configured and deployed as fuse features. Fuse profiles then contain property files that define which features are deployed to your OSGi containers.
Although I haven't used every feature, I haven't seen a similar UI concept for hosting / snapping.
For authentication and authorization there are various approaches - one nice solution is to use Apache zookeeper (a key/value store) as a basis for a simple user management component that can be available to all your services.

Deploying Different WSO2 product as single carbon application project

I am using WSO2 DSS, ESB and BPS for my project.
They are working fine in respective servers. But my idea is to integrate DSS, ESB & BPS into one car file(or some other deployment archive file) and thus making the deployment easier.
I have a Carbon application project created in Developer studio which has DSS project, ESB Config project, BPEL workflow and a Web application in it.
When I export it, it exports only the ESB & BPS and excludes Web application.
Is there a way to generate one deployment archive which would contain all the mentioned project? And is it possible to deploy a java application in WSO2 server since it has tomcat in it?
Thanks in Advance.
You can deploy webapplications in WSO2 Application server. Refer this. There is a server role which is defined in the server and also in the CAR file for each deployable artifacts. So if you are going to use one server lets say application server with DSS,ESB and BPS installed you need to add DSS's ESB's and BPS's server roles so artifacts which has respective servers role can be deployed in bundled server. Please refer following for server role management.
http://docs.wso2.org/wiki/display/AS510/Introduction+to+Server+Roles
Q>
Is there a way to generate one deployment archive which would contain all the mentioned project?
Ans>> Yes. It is possible. Carbon Application Archive(CAR) file is the single deployable module to package all the above mentioned different artifacts type to a single deployable archive.
You can use either IDE or Maven to generate the CAR file for your artifacts. Please refer to Dev Studio Documentation for more information.
Q> And is it possible to deploy a java application in WSO2 server since it has tomcat in it?
Ans>> You can deploy a Java application in WSO2 Application Server but in order to do that you need to convert your application to a Web-Services since WSO2 provides mechanism to expose your applications as Web Services. For that you can use either Axis2 Web Service or Jax-WS web-Service.
WSO2 Developer Studio supports creation of Axis2 Web-Services as well as Jax-WS web services. Please refer to Axis2 Artifact and Jax-WS Artifact Documentation for more information.
Also if you have a Java based Web-Application, you may deploy that Web-Application in WSO2 Application Server and WSO2 Dev Studio supports implementing Web-Applications as well.
Thanks and Regards,
Harshana

confused with the relationship between WSO2's products

After study WSO2 products, seems I got the following concepts, all of them are only my understanding, I don't know whether is correct or not, please advice:
All the products are running in Carbon which is a 'container' of the wso2 products, something like JSP like stuffs running in tomcat. am I right?
if No.1 is correct, so 'Enterprise Service Bus', 'Identity Server', 'Data Service Server', 'Governance Reistry' etc are all running in Carbon Server, actually I downloaded all the products, and I found they are all released with carbon together, which mean I can use command to start the management console directly, and each of them can running themselves, they have there own management console. right?
after I read Carbon user guide, it says 'all the products of wso2 are the components of Carbon', so I think 'Enterprise Service Bus', 'Identity Server', 'Data Service Server', 'Governance Reistry' can be put into one management console, which mean they can be integrated together, after I started Carbon server, all the features are running together?
I'm sorry ask such kind a stupid question, but after read many articles I still cant find out the structure between them, please advice, thanks in advance.
WSO2 middleware products come with a bunch of components. These are based on Java OSGi. So every product comes with a set of OSGi bundles (in OSGi terminology). Carbon is a core framework that's common to every product. This is again a bunch of OSGi components. Carbon core (which is also reffered to as just Carbon) contains a set of must have bundles. Logging, clustering, security etc... Carbon is a separate download also which you can run. Running carbon itself by its own is not very interesting unless you're doing something specific and you know what you're doing.
Now, coming back to the products .. each product have carbon core plus some more OSGi components. These additional components reflect product specific functionality. For example if you take the ESB, it's carbon core plus additional components that makes it an "ESB". Likewise for other products.
You can take the carbon server and install all these additional features. Feature installation is done via the same technology Eclipse is using to install plugins. Since everything is an OSGi bundle there has to be an OSGi container that all these run on. Carbon is running on top of Equinox OSGi container.
So Tomcat is also a separate OSGi bundle. You can install these components into any running carbon server and instantly add webapp hosting capability.
Yes. All WSO2 products are running inside WSO2 Carbon which is mainly a OSGi based framework.
Yes. A WSO2 Product (e.g., ESB) is a specialized Carbon framework. Management console is a part of Carbon where you can install external features to the product / uninstall existing features in the product to customize the product.
Yes theoretically. If the Carbon concept is correctly implemented in all the components of WSO2, they (ESB, IS, DSS as you said) should be installable in a single Carbon server without any problem using the WSO2 Feature Manager. But due to some dependency conflicts and version conflicts sometimes it may not be possible if you try to do it. But still you can resolve these OSGi conflicts in code level and make it possible to make them compatible, if you want.
Actually all the WSO2 products share the WSO2 components seamlessly among their products already. And in some instances we recommend to install multiple products in a single Carbon server. For example CEP feature is asked to be installed in BAM product when the user wants to use CEP as a realtime data processing solution with the BAM. For most other product combinations we have not yet tested well so the conflicts can occur. Thats why I said this theoretical.

Change management in ESB (servicemix, mule, jboss, ...)

I am wondering if any of the open source ESB provides strong change management capabilities:
ability to version services, components, rollback changes, compare
changes.
And if it could log which user has made changes and what is the
change to the application.
That's not an ESB ability.
But usually ESBs can behave like app containers (as in David A Chappell's Enterprise Service Bus book chapter 6). So the app/modules can be versioned.
For instance: Mule ESB can behave like a container. Mule provides a maven archetype for creating mule apps. Those apps can be commited to an version control repository. The hot deployment abilities of the container, should be enough to "rollback" changes.