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.
Related
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
currently I´m evaluating WSO2 Stratos LIVE as a public PaaS. I did much research but there are still some questions:
1.) Does WSO2 Stratos Live offer a "multi-tenancy-api" to make Java web applications multi-tenant-aware (something like the Google App Engine Namespace API)?
2.) Is the cartridge-based architecture available (like in WSO2 Stratos 2)?
3.) Are there official API documentations / code samples for all the cloud services? I just found blog posts and webinars. But an official api documentation and code samples would be very great (for example how to unse Identity Server for authentication in Java web applications).
4.) Based on WSO2 API Manager deployment on Stratos, I assume that the API manager is not available as cloud-service?
5.) Do I have hosting options on Stratos Live (e.g. Java Version, the country / Data Center where my app will be hosted)?
6.) Does exist a logs-api to access application logs from my application?
7.) Are there apis for data handling (for example Map Reduce, execution of cron jobs, CDN)?
8.) Do I have a local test environment? I know that there are IDE plugins for an easy deployment. But is it possible to test my app with all WSO2 Stratos Live cloud services local on my machine without connecting to the real services?
I know this is a lot but it would be more than helpful if the WSO2 professionals would help me to answer those questions. As I said, I did much research but those 8 questions are still open.
Thanks a lot and best regards
Ben
See the answers in-line.
1.) Does WSO2 Stratos Live offer a "multi-tenancy-api" to make Java web applications multi-tenant-aware (something like the Google App Engine Namespace API)?
Yes. Your web app can be multi-tenanted.
http://www.youtube.com/watch?v=_lEwm6VzAmo&noredirect=1
http://www.slideshare.net/afkham_azeez/building-a-multitenanted-cloudnative-appserver
2.) Is the cartridge-based architecture available (like in WSO2 Stratos 2)?
Not yet. But our plan is to make Stratos2.0 as the foundation of StratosLive. This will be done after the GA release of Stratos2.0 (it is now in beta stage)
3.) Are there official API documentations / code samples for all the cloud services? I just found blog posts and webinars. But an official api documentation and code samples would be very great (for example how to unse Identity Server for authentication in Java web applications).
All the documents and samples available for WSO2 products are valid for StratosLive. Reason is, we have deployed the very same product in the cloud. We are in the process of filling the documentation gap with regards to StratosLive at the moment.
4.) Based on WSO2 API Manager deployment on Stratos, I assume that the API manager is not available as cloud-service?
Not yet. It will be available in the future.
5.) Do I have hosting options on Stratos Live (e.g. Java Version, the country / Data Center where my app will be hosted)?
No. StratosLive uses shared instances to achieve multi-tenantcy (not like some other PaaSes which uses a JVM per tenant). Therefore, hosting options are not available.
6.) Does exist a logs-api to access application logs from my application?
Yes. We allow the tenants to view system logs and application logs. Unfortunately the API for log viewing is not documented yet.
http://sparkletechthoughts.blogspot.com/2012/09/how-distributed-logging-works-in-wso2.html
7.) Are there apis for data handling (for example Map Reduce, execution of cron jobs, CDN)?
Map reduce related tasks can be handled using toolboxes which can be deployed in WSO2 BAM (monitor.stratoslive.wso2.com). Please check the WSO2 BAM2 documentation for more info.
8.) Do I have a local test environment? I know that there are IDE plugins for an easy deployment. But is it possible to test my app with all WSO2 Stratos Live cloud services local on my machine without connecting to the real services?
You can download and use the Stratos local setup which can be found at http://wso2.com/cloud/stratos
I am planning to implement enterprise application using wso2. I have following list of functions in my application and I have already chosen wso2 products for them.
Dynamic Business Process - WSO2-BPS 3.0.1
Dynamic Rule -- WSO2-BRS 2.0
Integration with LDAP, Sharepoint -- WSO2-IS 4.0
SOAP & REST Services -- WSO2-AS 5.0.1
My concerns are:
1) How can I share resources (configuration files, registries, etc) between products?
2) If I create Tenant in IS then How it will be available to other carbon products. can I use same tenant in other carbon products?
3) Can I externalize storage of Tenants?
4) Single sign on (logged in one product can also access other products)
You can simply achieve this via our stratos Which will provide you to access to tenants from one product to another using centralised user store and you can use the Single sign on with Stratos which is by default available within products. You can play around with stratos from this.
If you download the local setup of stratos which will have all the WSO2 products as already pre-configured to run them in your private cloud. You can refer the README in the local setup pack for more information to run the setup.
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.
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