Using Spring to run an enterprise messaging application vs WebLogic
Hi-
I'm new to Spring and a novice at understanding the concepts of application servers and j2ee, so please bear with me if i screw up some concepts.
A little background:
My company currently uses WebLogic to run a messaging interface/app that acts as the middleware between an in-house thick client and a vendor busienss engine. The app also has data source connections to an oracle db.
[thick client] <--jms--> [ Our WebLogic app ] <--jms--> [vendor engine]
[oracle DB] <-WL DB SOURCE->
-Our Weblogic app runs on 2 sun servers as a single cluster for failover support and load balancing.
-The application provides asynchronous service to the thick client (stateless is the term i think).
-The only ejb we use are message driven beans, nothing else.
- We use tangosol caching to lookup data quickly for optimization purposes
- we don't use servlets or other stuff related to web dev
Our app does things like translate the data that the thick client sends into comprehensible data for the vendor engine and also does certain business logic that's customized for our needs to feed into the engine.
We use a custom proprietary framework written in java, which uses XML to configure objects, like how certain requests/replies are handled.
Question:
We are evaluating ways to save money on licensing by going away from Weblogic. I understand this would involve rewriting our code to fit with the new framework/app server.
1) Do you think using Spring framework only with no enterprise app server can serve well to fit our needs? (failover, clusters, load balancing, messaging, scalability, etc). The core question for me is, can I use Spring framework to suit my needs or do I also need some type of app server to go along with Spring for my needs? A developer on the team said he used spring 2.5.6 and activemq to simulate load balancing on a single machine (by running two "server" processes and running a client to send multiple requests to the two servers.). I think the concept was called "message driven pojo (http://blog.springsource.com/2006/08/11/message-driven-pojos/)"
2) (stupid question) What's the fundamental difference between Spring and WebLogic? Is it the fact that WebLogic is just a j2ee container and spring isn't? If I understand correctly from what I've read, an application built on the Spring framework can adhere to J2EE standards still, so I'm having difficulty understanding why people just not move away from app servers and go to spring, which is a lot cheaper and can do more I assume.
3) Any other suggestions on alternatives to WebLogic? Perhaps using Spring with another app server, or using a different app server by itself, etc?
4) Please feel free to provide some buzz words I should research on my own and I'll try to do my own DD if you show me the right door :).
Thanks
ps. i did use search and read for bit... the closest relevant topic i could find was this but it wasn't fully answered.
FB
JEE without application server (with Spring+Atomikos)
Hi,
If you are doing messaging then you don't need an application server nor even Tomcat. Atomikos supports message-driven POJOs (it is a core component of the platform).
Have a look at these:
http://www.atomikos.com/Publications...licationServer
http://www.atomikos.com/Publications...ionsWithSpring
http://blog.atomikos.com/?p=36
http://blog.atomikos.com/?p=29
Best
Guy
Lack of manageability and portability?
Quote:
Originally Posted by
chudak
The biggest disadvantages to running an application as a standalone app (main method) versus a container is the lack of manageability and portability.
Portability is assured by the VM and no longer by the appserver dinosaur:-)
Quote:
Originally Posted by
chudak
While newer jdk's and the management api (JMX) make this somewhat easier, without a container you'd have to build managed components in your application to support much of what you already get in a container.
Right, just like any appserver requires; this is not really an argument IMHO.
Quote:
Originally Posted by
chudak
When you hit ctrl-c in a jboss container, the shutdown hook that jboss registers on startup gracefully brings down the container (including your spring application). When you hit crtl-c in a (main) application, it just terminates.
You have a point here, although this does not really sound like a killer feature to me. I guess it's not that hard to add utilities that intercept ctrl-c... Most managed UNIX environments will prevent you from doing that anyway?
Quote:
Originally Posted by
chudak
Jboss provides several management views of your application that allow you to monitor threads, memory and cpu usage as well as the applications that are deployed.
So does the JMX console of any JDK 5 or higher... And you're not restricted to a web interface either.
Cheers
Guy