views:

585

answers:

5

So I have a client that needs to be running tomcat for various things (Solr and a webservice as well) and after having a meeting with him and another programmer on the project, I got a little confused. The other programmer was throwing around buzzwords and saying things like "We need to have middleware for tomcat." In response to this, my client asks me to look for middleware for tomcat which confused me because I thought that writing a webservice would be specific to the project at hand and so the "middleware" would be developed by us. If this is the case, why not just say "Web service"?

My question is this: Is there an open source servlet or plug-in for tomcat that makes it middleware (maybe something from apache's site?) or does it make sense that I should be writing my own middleware for tomcat? Or... is tomcat considered middleware? I am a total n00b when it comes to Java and tomcat, but I have a lot of experience with C#, so I'm trying to figure out how this relates to C#. I have never used the term "middleware" before and I'm pretty sure "webservice" is pretty much the same thing.

Any ideas?

+3  A: 

The term middleware is usually used to describe software who's purpose is to connect together two different systems.

If you are writing web services on top of another application and the third application will talk to the web services. Then yes, you are writing middleware.

If you are generally working in a .NET environment and some systems are on Tomcat. Then it's likely that the other programmer was claiming that to connect the .NET apps to the Java apps on Tomcat, some middleware would have to be written. (He's probably right.)

Sindri Traustason
A: 

Middleware is literally just a software that sits in the middle of 2 systems. It does things like if one system talk XML over HTTP, the other system talks COBOL. Middleware can do the translation between the two system.

A lot of the "middleware" out there in the J2EE space are just software build on top of a J2EE container. Unfortunately, tomcat is not a full-fledge J2EE container, it just implements the Servlet specification. Therefore, there are no support for other J2EE facilities such as JMS, EJB, SMTP, etc which limits its off-the-self ability to connect to other system.

However, if you are working with modern systems, a lot of software can run on tomcat which allows you to connect to other system using SOAP-based web-service. In this case, you don't really need a separate middleware system.

All-in-all, identify what systems you need to connect to now, what systems you need to connect to the near future, and Keep It Stupid and Simple (KISS). Don't just blindly trust vendors who will claim their middleware will make coffee and delivery it to the CEO daily if that is what they need to say to make the sale.

Regarding "web-service", web service really means anything service you can call from the web. So it once again depends on your audience, if you are communication to external vendors familiar with SOAP based web-service, you have lots of choices. However, if you audience want to call you service by tweeting against your tweeter account, it is also a web service.

lsiu
+3  A: 

All of these answers are too verbose. Yes, Tomcat is middleware. it sits between the HTML/Javascript layer on the client's browser and the database layer on your server. It's not as full featured as a J2EE server but it's still "middleware" as far as the generally accepted buzzword-term goes.

MattC
You have the right idea about the answer I was looking for. To the point, thanks!
DJTripleThreat
A: 

You can justifiably slap the "Middleware" label on about anything that has separate clients and back-ends. The issue to me isn't what you call it, but whether or not the "it" is the right architecture/technology for the situation.

ShabbyDoo
A: 

I think the obvious reply would be, "Middleware for Tomcat to do what?"

If the person's answer is, "To stand between the database and the browser", then the right answer is "Tomcat is middleware".

If the answer is, "To stand between our security server and Tomcat", then the answer is probably "Okay, we'll have to check if we already have such software in house or if we need to acquire or build it."

In real life when this sort of thing comes up the answer I often get is more like, "Because I read in a magazine that Web middleware is the latest cutting edge technology and so we should be using it" or "Umm, because, like, I heard somewhere that you always need middleware or metal ware or something like that", then the correct answer is, "When you have identified the problem, we can discuss solutions. Let's not decide on a solution and then search for a problem that it might solve."

Jay