Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / May 2005

Tip: Looking for answers? Try searching our database.

HTTP tunneling and Servlet communication

Thread view: 
exquisitus - 20 May 2005 00:07 GMT
I am developing a J2EE app, front end is a fat client accross the
internet. Until recently, I was planning to use RMI to communicate
between f/end and server but after lots more reading I have decided
against it (for reasons which would be obvious to anyone attempting to
reply this post - so to keep the post brief, I'll skip enumerating them
here).

I want to use a servlet layer at the backend, because my client will
almost definitely be behind a firewall/using a proxy server (I will
therefore need http/s tunneling to communicate with clients). I have
come up with a class which acts as a Facade to clients and presents a
course simpler request/response API to clients. I have a Requset Factory
which creates Asynch and Synch Requests. I am however stuck now and need
some help. I am not sure how to convert my method call into an HTTP
request (I have read several Servlet tutorials but still can't see a
usefule xample that shows how a thick client can use a servlet - all
examples seem to be about web browsers).

Additionaly, I have not entirely worked out how I can "force" certain
requests (i.e. SynchRequests) to be blocking. I have some ideas, but
there are all pretty much hacks. i would be grateful for any ideas or
pointers here.

Lastly, whilst all this request/response is going on, I want to be
"pushing" data from the server to the client through the same tunnel. Is
this possible?. Can I send request/responses AND data on the same tunnel
(presumably the same port)?.

Tks
Arjunan  Venkatesh - 20 May 2005 00:49 GMT
i am not sure i completely understand ur design ...
but I use Httpclient in a java thick client to communicate with a
servlet or any http servers ... basically mimic a browser... (
apache.commons.httpclient )

-v

> I am developing a J2EE app, front end is a fat client accross the
> internet. Until recently, I was planning to use RMI to communicate
[quoted text clipped - 7 lines]
> therefore need http/s tunneling to communicate with clients). I have
> come up with a class which acts as a Facade to clients and presents a

> course simpler request/response API to clients. I have a Requset Factory
> which creates Asynch and Synch Requests. I am however stuck now and need
[quoted text clipped - 4 lines]
>
> Additionaly, I have not entirely worked out how I can "force" certain

> requests (i.e. SynchRequests) to be blocking. I have some ideas, but
> there are all pretty much hacks. i would be grateful for any ideas or

> pointers here.
>
[quoted text clipped - 4 lines]
>
> Tks
Andrea Desole - 20 May 2005 09:41 GMT
> I want to use a servlet layer at the backend, because my client will
> almost definitely be behind a firewall/using a proxy server (I will
[quoted text clipped - 6 lines]
> usefule xample that shows how a thick client can use a servlet - all
> examples seem to be about web browsers).

did you look at SOAP?

> Additionaly, I have not entirely worked out how I can "force" certain
> requests (i.e. SynchRequests) to be blocking. I have some ideas, but
> there are all pretty much hacks. i would be grateful for any ideas or
> pointers here.

well, http is actually synchronous, so your problem should be to do that
non blocking

> Lastly, whilst all this request/response is going on, I want to be
> "pushing" data from the server to the client through the same tunnel. Is
> this possible?. Can I send request/responses AND data on the same tunnel
> (presumably the same port)?.

I don't know if this is possible. The problem here is basically to get
more http responses for one request, which is fairly hard. The only
possibility I can think of is to send responses with the 100 status
code. As far as I know, in that case it's possible to send more responses.
exquisitus - 20 May 2005 14:14 GMT
>> I want to use a servlet layer at the backend, because my client will
>> almost definitely be behind a firewall/using a proxy server (I will
[quoted text clipped - 8 lines]
>
> did you look at SOAP?

Yeah. Sorry, I should have mentioned that I did not want to use SOAP
because of all the "weight" of the XML payload and also the extra XML
procesing required on both ends. I want this to be as lightweight as I
can get away with (securely).

>> Additionaly, I have not entirely worked out how I can "force" certain
>> requests (i.e. SynchRequests) to be blocking. I have some ideas, but
[quoted text clipped - 3 lines]
> well, http is actually synchronous, so your problem should be to do that
> non blocking

My bad. I should have read what I was typing before I sent the post ;-).
You are entirely right - the problem is to make the calls asynch. I have
ideas about how to do it - an obvious one would be spawning a new thread
which actually executes the HTTPRequest command, returning to the user
and then calling back the callee when the data arrives/times out etc,
but I wanted to know if there is another (more elegant?) way.

>> Lastly, whilst all this request/response is going on, I want to be
>> "pushing" data from the server to the client through the same tunnel.
[quoted text clipped - 5 lines]
> possibility I can think of is to send responses with the 100 status
> code. As far as I know, in that case it's possible to send more responses.

No, that is not what I mean. I'm talking about a client sending a
request and simultaneously receiving data that is being "pushed" from
the server. The key here is that the data is being pushed or streamed
from the server. It is a "push" model i.e. not the typical "pull" model.
Again, of the top of my head - I think I could have the datastream
listener running in another thread and then handling the streaming data
as it arrives (maybe it is tagged differently?). Which also suggests the
possible use of a buffer so that data dosen't get lost if the client is
busy.....
Andrea Desole - 20 May 2005 14:40 GMT
> Yeah. Sorry, I should have mentioned that I did not want to use SOAP
> because of all the "weight" of the XML payload and also the extra XML
> procesing required on both ends. I want this to be as lightweight as I
> can get away with (securely).

well, than you will have to do something similar; a servlet that gets
HTTP requests that contain, in the body, the paramters.

> My bad. I should have read what I was typing before I sent the post ;-).
> You are entirely right - the problem is to make the calls asynch. I have
> ideas about how to do it - an obvious one would be spawning a new thread
> which actually executes the HTTPRequest command, returning to the user
> and then calling back the callee when the data arrives/times out etc,
> but I wanted to know if there is another (more elegant?) way.

don't think so. This is the regular solution.

> No, that is not what I mean. I'm talking about a client sending a
> request and simultaneously receiving data that is being "pushed" from
> the server. The key here is that the data is being pushed or streamed
> from the server. It is a "push" model i.e. not the typical "pull" model.

I think I understood correctly. The problem is that you don't have push
in HTTP. What I can imagine is that the client sends a first request to
the server, and then the server sends multiple responses. This might
simulate a push model.

> Again, of the top of my head - I think I could have the datastream
> listener running in another thread and then handling the streaming data
> as it arrives (maybe it is tagged differently?). Which also suggests the
> possible use of a buffer so that data dosen't get lost if the client is
> busy.....

I'm not sure, but if you want to use streaming you should check how it
works with a proxy.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.