C++ objects container running on Linux. A light-weigth and pure C++ alternative for servlet containers

Welcome to Cobra web site

As for now this project is in its very, very early stadium. There some docs, some sources, no FAQ, no manual but in days there will be pre-alpha version available. If you have any questions about Cobra or want to join the team please drop me an email to hbs [at] users [dot] sourceforge [dot] net.

Idea

Imagine a developer who wants to create web enabled application. There are plenty of ways he can create such application. But there are not so many ways if he wants to use C++. One may ask why C++ while there are so many other solutions. Well, I think this is the question that has to be stated to application developer. He wants C++ so we give him tools to achieve his aim. We want to create such tools that support easily creating of web enabled C++ applications.

So, that's the goal. The question is how to achieve it. I think the best way is to exploit an idea which Java Servlets Technology is based on. The idea of object containers.

Now lets allow application developer have some fun. First of all he creates a class which is the main class of his application. It may look like this
class MyApp: public HostedObject
{
private:
  int i;

public:
  MyApp(): i(0)
  {
  }

  void handleRequest()
  {
    out << "Hello world!" << endl << i++ << endl;
  }

};
Now it's the time to compile and link this application with our libraries. The result of this step is a shared object which can be dynamically loaded into our server. Let's assume that server's config states that this app can be achieved via http at /myapp. Using webbrowser we can connect to this app at http://myserver.com/myapp. The results are:
Hello world
0
Now we connect again
Hello world
1
and again
Hello world
2
Now we connect from different location and the result
Hello world
0
As you may noticed now there are two objects hosted in our server. Each object serves different connection. Our developer don't have to think about sessions - objects are created automagically for each connection. All he does is application programming.