[jboss-user] [Remoting] - Re: JBoss Remoting and compression

doychin do-not-reply at jboss.com
Sat Jan 3 12:50:26 EST 2009


In order to allow compression to work with EJB 2.x invocations I created my own Compression marshaller and unmarshaller which descend from original classes. 

The default constructor for both classes now call the constructor that takes one parameter of type Marshaller/UnMarshaller with new InvocationMarshaller()/InvocationUnMarshaller().

I also did new versions of read/write methods which I use to test different variants for calling GZip streams.

>From my experiments I can tell that switching 

 oos.flush(); and gzos.finish();

does not help. 

I'm still getting exceptions for incorrect version in the stream. But I also found a solution which is in the code below.

In order to workaround the other problem with OutOfMemory exception I created new GZip input/output stream classes that descend from the original Java classes.

in my Output stream I added new finish method

 public void finish() throws IOException
  |         {
  |             super.finish();
  |             def.end(); // This will release all resources used by zlib 
  |         }
  |     }

in the input stream I added new method

         public void end() throws IOException
  |         {
  |             while (available() > 0) { // This tell the gzip input stream to read the extra trailer put by finish method in output stream. This all removes the need to use buffered stream like in 2.x branch
  |                 read();
  |             }
  |             inf.end();
  |         }
  | 

and I call this new method at the end of read method.

this way I can use original java GZip classes without having to relay on external libraries.

- inf and def are protected fields in Java 1.5 and 1.6

If you want I can provide you with full source code so you can use it to create the necessary updates in 2.x and 2.2 branches.

Doychin

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4199342#4199342

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4199342



More information about the jboss-user mailing list