www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - HessianD

reply Radu <radu.racariu void.space> writes:
HessianD (http://www.dsource.org/projects/hessiand/)
A D implementation of the Hessian (http://caucho.com/hessian) binary web
service protocol.
Supports both the client and the server model.

Client sample:

import hessian.HttpProxy :
HttpProxy;
import tango.io.Stdout;

char[] echo(char[] param);

void main ()
{

     // create a Http proxy on the given Http endpoint so we can post
our Hessian stream
     scope service = new HttpProxy("http://localhost:5667/hessiantest");

     // create a proxy method that will do the Hessian serialization
and deserialization
     auto _echo = &service.proxy!(echo);

     // we'll perform the remote call and display the result
     Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

}

Server sample:

import hessian.HttpServer:
Server;

class impl
{
	char[] echo (char[] param)
	{
	  return param;
	}	
}

void main()
{
     // create a Http server on the given port
     auto server = new Server(5667);
     // attach a context with the Http endpoint and the class
implementing the method
     auto context = server.addContext!(impl)("/test/hessiantest");
     // bind the method to the context created
     context.bind!(impl.echo);
     // and finally start listenning to Http Post requests
     server.start;
}
May 28 2007
parent reply "Simen Haugen" <simen norstat.no> writes:
I cannot compile it. You're using tango.util.time.Utc, and in my tango trunk 
that file doesn't exist.

"Radu" <radu.racariu void.space> wrote in message 
news:f3f7n3$1r10$1 digitalmars.com...
 HessianD (http://www.dsource.org/projects/hessiand/)
 A D implementation of the Hessian (http://caucho.com/hessian) binary web
 service protocol.
 Supports both the client and the server model.

 Client sample:

 import hessian.HttpProxy :
 HttpProxy;
 import tango.io.Stdout;

 char[] echo(char[] param);

 void main ()
 {

     // create a Http proxy on the given Http endpoint so we can post
 our Hessian stream
     scope service = new HttpProxy("http://localhost:5667/hessiantest");

     // create a proxy method that will do the Hessian serialization
 and deserialization
     auto _echo = &service.proxy!(echo);

     // we'll perform the remote call and display the result
     Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

 }

 Server sample:

 import hessian.HttpServer:
 Server;

 class impl
 {
 char[] echo (char[] param)
 {
   return param;
 } }

 void main()
 {
     // create a Http server on the given port
     auto server = new Server(5667);
     // attach a context with the Http endpoint and the class
 implementing the method
     auto context = server.addContext!(impl)("/test/hessiantest");
     // bind the method to the context created
     context.bind!(impl.echo);
     // and finally start listenning to Http Post requests
     server.start;
 }


 
Jun 05 2007
parent reply Radu <radu.racariu void.space> writes:
I've updated the project to use:
tango.util.time.WallClock,
tango.util.time.Clock,

it works with tango 0.98 RC2.

Please download hessiand again.


Simen Haugen wrote:
 I cannot compile it. You're using tango.util.time.Utc, and in my tango trunk 
 that file doesn't exist.

 "Radu" <radu.racariu void.space> wrote in message 
 news:f3f7n3$1r10$1 digitalmars.com...
   
 HessianD (http://www.dsource.org/projects/hessiand/)
 A D implementation of the Hessian (http://caucho.com/hessian) binary web
 service protocol.
 Supports both the client and the server model.

 Client sample:

 import hessian.HttpProxy :
 HttpProxy;
 import tango.io.Stdout;

 char[] echo(char[] param);

 void main ()
 {

     // create a Http proxy on the given Http endpoint so we can post
 our Hessian stream
     scope service = new HttpProxy("http://localhost:5667/hessiantest");

     // create a proxy method that will do the Hessian serialization
 and deserialization
     auto _echo = &service.proxy!(echo);

     // we'll perform the remote call and display the result
     Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

 }

 Server sample:

 import hessian.HttpServer:
 Server;

 class impl
 {
 char[] echo (char[] param)
 {
   return param;
 } }

 void main()
 {
     // create a Http server on the given port
     auto server = new Server(5667);
     // attach a context with the Http endpoint and the class
 implementing the method
     auto context = server.addContext!(impl)("/test/hessiantest");
     // bind the method to the context created
     context.bind!(impl.echo);
     // and finally start listenning to Http Post requests
     server.start;
 }



     
Jun 05 2007
parent reply "Simen Haugen" <simen norstat.no> writes:
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Compiling works fine now, but I cannot get your examples to work. When =
trying to run the client, I get the following error:

hessian.Input.HessianError: invalid reply, expected 'r' instead of<
  "Radu" <radu.racariu void.space> wrote in message =
news:f43gc1$2qa$1 digitalmars.com...
  I've updated the project to use:
  tango.util.time.WallClock,
  tango.util.time.Clock,

  it works with tango 0.98 RC2.

  Please download hessiand again.


  Simen Haugen wrote:=20
I cannot compile it. You're using tango.util.time.Utc, and in my tango =
trunk=20
that file doesn't exist.

"Radu" <radu.racariu void.space> wrote in message=20
news:f3f7n3$1r10$1 digitalmars.com...
  HessianD (http://www.dsource.org/projects/hessiand/)
A D implementation of the Hessian (http://caucho.com/hessian) binary web
service protocol.
Supports both the client and the server model.

Client sample:

import hessian.HttpProxy :
HttpProxy;
import tango.io.Stdout;

char[] echo(char[] param);

void main ()
{

    // create a Http proxy on the given Http endpoint so we can post
our Hessian stream
    scope service =3D new =
HttpProxy("http://localhost:5667/hessiantest");

    // create a proxy method that will do the Hessian serialization
and deserialization
    auto _echo =3D &service.proxy!(echo);

    // we'll perform the remote call and display the result
    Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

}

Server sample:

import hessian.HttpServer:
Server;

class impl
{
char[] echo (char[] param)
{
  return param;
} }

void main()
{
    // create a Http server on the given port
    auto server =3D new Server(5667);
    // attach a context with the Http endpoint and the class
implementing the method
    auto context =3D server.addContext!(impl)("/test/hessiantest");
    // bind the method to the context created
    context.bind!(impl.echo);
    // and finally start listenning to Http Post requests
    server.start;
}



   =20

 =20
Jun 05 2007
next sibling parent reply "Simen Haugen" <simen norstat.no> writes:
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Sorry, my bad. I just implemented the interface in both the client and =
server code as a quick hack, and that didnt work. If I use the same =
interface file it works.. Nice work! Looking forward to trying it.
  "Simen Haugen" <simen norstat.no> wrote in message =
news:f43i4t$6ej$1 digitalmars.com...
  Compiling works fine now, but I cannot get your examples to work. When =
trying to run the client, I get the following error:

  hessian.Input.HessianError: invalid reply, expected 'r' instead of<
    "Radu" <radu.racariu void.space> wrote in message =
news:f43gc1$2qa$1 digitalmars.com...
    I've updated the project to use:
    tango.util.time.WallClock,
    tango.util.time.Clock,

    it works with tango 0.98 RC2.

    Please download hessiand again.


    Simen Haugen wrote:=20
I cannot compile it. You're using tango.util.time.Utc, and in my tango =
trunk=20
that file doesn't exist.

"Radu" <radu.racariu void.space> wrote in message=20
news:f3f7n3$1r10$1 digitalmars.com...
  HessianD (http://www.dsource.org/projects/hessiand/)
A D implementation of the Hessian (http://caucho.com/hessian) binary web
service protocol.
Supports both the client and the server model.

Client sample:

import hessian.HttpProxy :
HttpProxy;
import tango.io.Stdout;

char[] echo(char[] param);

void main ()
{

    // create a Http proxy on the given Http endpoint so we can post
our Hessian stream
    scope service =3D new =
HttpProxy("http://localhost:5667/hessiantest");

    // create a proxy method that will do the Hessian serialization
and deserialization
    auto _echo =3D &service.proxy!(echo);

    // we'll perform the remote call and display the result
    Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

}

Server sample:

import hessian.HttpServer:
Server;

class impl
{
char[] echo (char[] param)
{
  return param;
} }

void main()
{
    // create a Http server on the given port
    auto server =3D new Server(5667);
    // attach a context with the Http endpoint and the class
implementing the method
    auto context =3D server.addContext!(impl)("/test/hessiantest");
    // bind the method to the context created
    context.bind!(impl.echo);
    // and finally start listenning to Http Post requests
    server.start;
}



   =20

 =20
Jun 05 2007
parent Radu <radu.racariu void.space> writes:
great!

Simen Haugen wrote:
 Sorry, my bad. I just implemented the interface in both the client and 
 server code as a quick hack, and that didnt work. If I use the same 
 interface file it works.. Nice work! Looking forward to trying it.

     "Simen Haugen" <simen norstat.no <mailto:simen norstat.no>> wrote
     in message news:f43i4t$6ej$1 digitalmars.com...
     Compiling works fine now, but I cannot get your examples to work.
     When trying to run the client, I get the following error:
      
     hessian.Input.HessianError: invalid reply, expected 'r' instead of<

         "Radu" <radu.racariu void.space
         <mailto:radu.racariu void.space>> wrote in message
         news:f43gc1$2qa$1 digitalmars.com...
         I've updated the project to use:
         tango.util.time.WallClock,
         tango.util.time.Clock,

         it works with tango 0.98 RC2.

         Please download hessiand again.


         Simen Haugen wrote:
         I cannot compile it. You're using tango.util.time.Utc, and in my tango
trunk 
         that file doesn't exist.

         "Radu" <radu.racariu void.space> wrote in message 
         news:f3f7n3$1r10$1 digitalmars.com...
           
         HessianD (http://www.dsource.org/projects/hessiand/)
         A D implementation of the Hessian (http://caucho.com/hessian) binary
web
         service protocol.
         Supports both the client and the server model.

         Client sample:

         import hessian.HttpProxy :
         HttpProxy;
         import tango.io.Stdout;

         char[] echo(char[] param);

         void main ()
         {

             // create a Http proxy on the given Http endpoint so we can post
         our Hessian stream
             scope service = new HttpProxy("http://localhost:5667/hessiantest");

             // create a proxy method that will do the Hessian serialization
         and deserialization
             auto _echo = &service.proxy!(echo);

             // we'll perform the remote call and display the result
             Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

         }

         Server sample:

         import hessian.HttpServer:
         Server;

         class impl
         {
         char[] echo (char[] param)
         {
           return param;
         } }

         void main()
         {
             // create a Http server on the given port
             auto server = new Server(5667);
             // attach a context with the Http endpoint and the class
         implementing the method
             auto context = server.addContext!(impl)("/test/hessiantest");
             // bind the method to the context created
             context.bind!(impl.echo);
             // and finally start listenning to Http Post requests
             server.start;
         }



             
Jun 05 2007
prev sibling parent reply Radu <radu.racariu void.space> writes:
can you compile the client example with -version=Debug
then paste the  "response:" line.
As a note I'm compiling with dmd 1.014, rebuild 0.65 on Windows XP


Simen Haugen wrote:
 Compiling works fine now, but I cannot get your examples to work. When 
 trying to run the client, I get the following error:
  
 hessian.Input.HessianError: invalid reply, expected 'r' instead of<

     "Radu" <radu.racariu void.space <mailto:radu.racariu void.space>>
     wrote in message news:f43gc1$2qa$1 digitalmars.com...
     I've updated the project to use:
     tango.util.time.WallClock,
     tango.util.time.Clock,

     it works with tango 0.98 RC2.

     Please download hessiand again.


     Simen Haugen wrote:
     I cannot compile it. You're using tango.util.time.Utc, and in my tango
trunk 
     that file doesn't exist.

     "Radu" <radu.racariu void.space> wrote in message 
     news:f3f7n3$1r10$1 digitalmars.com...
       
     HessianD (http://www.dsource.org/projects/hessiand/)
     A D implementation of the Hessian (http://caucho.com/hessian) binary web
     service protocol.
     Supports both the client and the server model.

     Client sample:

     import hessian.HttpProxy :
     HttpProxy;
     import tango.io.Stdout;

     char[] echo(char[] param);

     void main ()
     {

         // create a Http proxy on the given Http endpoint so we can post
     our Hessian stream
         scope service = new HttpProxy("http://localhost:5667/hessiantest");

         // create a proxy method that will do the Hessian serialization
     and deserialization
         auto _echo = &service.proxy!(echo);

         // we'll perform the remote call and display the result
         Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

     }

     Server sample:

     import hessian.HttpServer:
     Server;

     class impl
     {
     char[] echo (char[] param)
     {
       return param;
     } }

     void main()
     {
         // create a Http server on the given port
         auto server = new Server(5667);
         // attach a context with the Http endpoint and the class
     implementing the method
         auto context = server.addContext!(impl)("/test/hessiantest");
         // bind the method to the context created
         context.bind!(impl.echo);
         // and finally start listenning to Http Post requests
         server.start;
     }



         
Jun 05 2007
parent "Simen Haugen" <simen norstat.no> writes:
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

I just tried to reproduce it, but it worked now... I must have done =
something else, but I don't know what.
  "Radu" <radu.racariu void.space> wrote in message =
news:f43k2n$9d6$1 digitalmars.com...
  can you compile the client example with -version=3DDebug
  then paste the  "response:" line.=20
  As a note I'm compiling with dmd 1.014, rebuild 0.65 on Windows XP


  Simen Haugen wrote:=20
    Compiling works fine now, but I cannot get your examples to work. =
When trying to run the client, I get the following error:

    hessian.Input.HessianError: invalid reply, expected 'r' instead of<
      "Radu" <radu.racariu void.space> wrote in message =
news:f43gc1$2qa$1 digitalmars.com...
      I've updated the project to use:
      tango.util.time.WallClock,
      tango.util.time.Clock,

      it works with tango 0.98 RC2.

      Please download hessiand again.


      Simen Haugen wrote:=20
I cannot compile it. You're using tango.util.time.Utc, and in my tango =
trunk=20
that file doesn't exist.

"Radu" <radu.racariu void.space> wrote in message=20
news:f3f7n3$1r10$1 digitalmars.com...
  HessianD (http://www.dsource.org/projects/hessiand/)
A D implementation of the Hessian (http://caucho.com/hessian) binary web
service protocol.
Supports both the client and the server model.

Client sample:

import hessian.HttpProxy :
HttpProxy;
import tango.io.Stdout;

char[] echo(char[] param);

void main ()
{

    // create a Http proxy on the given Http endpoint so we can post
our Hessian stream
    scope service =3D new =
HttpProxy("http://localhost:5667/hessiantest");

    // create a proxy method that will do the Hessian serialization
and deserialization
    auto _echo =3D &service.proxy!(echo);

    // we'll perform the remote call and display the result
    Stdout ("Remote result: ") ( _echo("Hello World!") ).newline.flush;

}

Server sample:

import hessian.HttpServer:
Server;

class impl
{
char[] echo (char[] param)
{
  return param;
} }

void main()
{
    // create a Http server on the given port
    auto server =3D new Server(5667);
    // attach a context with the Http endpoint and the class
implementing the method
    auto context =3D server.addContext!(impl)("/test/hessiantest");
    // bind the method to the context created
    context.bind!(impl.echo);
    // and finally start listenning to Http Post requests
    server.start;
}



   =20

 =20
Jun 05 2007