confused with the relationship between WSO2's products - wso2

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.

Related

Accessing WSO2 BPS and ESB registry from code

I am trying to access the registry of WSO2 BPS and WSO2 ESB from Java in order to automatically fill the registry based on the data I provide.
I have already found a number of resources about the required Java code and dependencies, this being the most helpful one: [WSO2 Governance Registry]Using WSRegistryServiceClient. However, the approach described in these resources depends on the WSRegistryService service. This service is included in Governance Registry by default, but not in the other WSO2 products. I have verified that my code works for the Governance Registry. For any other WSO2 product on my machine, I get this error:
The service cannot be found for the endpoint reference (EPR) https://localhost:9445/services/WSRegistryService
I found an old thread suggesting that it should be possible to install the WSRegistryService on other WSO2 products as well, but I have not been able to find out how to do so. I can't seem to find it within the features I can install from the web console of the products. I have also tried manually copying the relevant jar from the plugins directory of Governance Registry into the plugins directory of other products, but that doesn't seem to be sufficient.
Note that my application for filling the registry will not be running on the carbon server whose registry I want to access, so using CarbonContext.getThreadLocalCarbonContext() (an approach I found in some other articles) is not an option.
I think your referring to how to install features to WSO2 products,
Please find this documentation.

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

wso2 carbon - deploy to servicemix / fuseesb

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

How to merge wso2 products?

I want to merge WSO2 ESB and Data Services Products to execute both of them
on one server.
Both of them are based on Carbon framework and consists of some OSGi bundles.
Is there a simple way to do this.
Best regards.
--Seyyed Jamal
Yes. You can install the ESB features in the DSS or vise versa. Feature installing way is common for all the WSO2 Carbon Servers (ESB, IS, AS, DSS, BAM .....). Here is a blog post I wrote on installing an AS feature in IS. It is the same procedure for the ESB or DSS, find the required features, install them.

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.