On a less general note:

With the servlet stuff, you can quickly and easily add a servlet
filter to modify the input and behavior before it reaches the actual
servlet.  For example, extend javax.servlet.Filter and override
doFilter() to "inject" the UserAgent string into the request header if
it's not present.  Then configure the web.xml to have all incoming
requests pass through the new filter.  You can even chain multiple
filters together.

This is not a generic solution like AspectJ.  However, it may be
quicker and easier to do than learning and configuring AOP.

Cynick


On Feb 12, 10:23 am, Scott Cytacki <[EMAIL PROTECTED]> wrote:
> This is the sun jnlp 1.5.? servlet.  It might be fixed in the 1.6
> version of the servlet.   I believe it is GPL'd so we can also just fix
> it.
>
> On a general note:
>
> One way of doing stuff like Stephen described in Java is to use aspect
> oriented programming.  You can use aspectJ to do this.  One way to use
> it installs a special classloader that modifies the classes as they are
> loaded.  For example, if we didn't have access to the jnlp servlet code
> we could use this to fix it without directly changing its code.
>
> Scott
>
> On Sun, 2007-02-11 at 03:31 -0500, Stephen Bannasch wrote:
> > Documentation and a work-around for a strange problem that I thought
> > should be at least archived on the sail-dev list.
>
> > > Hi Stephen,
>
> > >     I was able to reproduce the error that you mentioned, but I do
> > > not know why this error occurs or how to fix it.
>
> > >     Is -H 'User-Agent:' a proper usage of curl?  All the stuff that
> > > I've found so far online has something after the colon. What does
> > > 'User-Agent:' mean?
>
> > >     Another thought:  how about curl -i -A
> > >http://tels-develop.soe.....?
>
> > The curl commands below are just examples for you to easily duplicate
> > the problem. Normally curl always sends a User-Agent header. The "-H
> > 'User-Agent:'" parameter removes this header from curls communication.
>
> > See this page for an explanation of the User-Agent header:
>
> >http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43
>
> > At 1:27 AM -0500 2/11/07, Paul Burney wrote:
> > > Stephen Bannasch <[EMAIL PROTECTED]> on Saturday, February 10,
> > > 2007 at 21:17 +0000 wrote:
> > > Have you ever seen this kind of problem before?
>
> > > No, but since the problem doesn't occur with other requests on that
> > > tomcat server, it would appear to be the servelet that is returning
> > > the JNLP file.  I'd guess that the servelet is doing some kind of
> > > sniffing based on the user-agent string to determine which
> > > JNLP/properties to return to the user, maybe to avoid browser bugs
> > > or maybe to provide platform specific features.
>
> > At 10:37 PM -0800 2/10/07, Hiroki Terashima wrote:
> > > messing around with curl a bit more, I found that
>
> > > curl -i -H 'User-Agent:'http://wise.berkeley.eduworks
>
> > > curl -i -H 'User-Agent:'http://hiroki-prod.wisetest.org
> > > (tels-develop) works
>
> > > curl -i -H 'User-Agent:'http://tels-develop.soe.berkeley.eduworks
>
> > > curl -i -H 'User-Agent:'http://tels-develop.soe.berkeley.edu:8080
> > > works
>
> > > curl -i -H 'User-Agent:'
> > >http://tels-develop.soe.berkeley.edu:8080/maven-jnlp-snapshot/
> > > works
>
> > > curl -i -H 'User-Agent:'
> > >http://tels-develop.soe.berkeley.edu:8080/maven-jnlp-snapshot/plr-eve...doesn't
> > > work
>
> > > curl -i -H 'User-Agent:'
> > >http://tels-develop.soe.berkeley.edu:8080/maven-jnlp-snapshot/authori...doesn't
> > > work
>
> > > curl -i -H 'User-Agent:'
> > >http://tels-develop.soe.berkeley.edu:8080/maven-jnlp-snapshot/session...works
>
> > > so it seems like a problem with the jnlp files.
>
> > > Hiroki
>
> > Probably not the jnlp files themselves but the Java webstart servlet
> > and how it responds to requests for those files. It shouldn't produce
> > a 500 error in response to the lack of a User-Agent header so it's a
> > bug.
>
> > I've been able to implement a work-around by 'monkey-patching' the
> > Net::HTTPGenericRequest Ruby library class. As long as any User-Agent
> > header is present the request complete's without error.
>
> > It can be very helpful to use a language where classes can always be
> > re-opened. I could have changed the library directly but then my fix
> > would only work on the computers with the patched library. Instead in
> > the sds I reopen the Ruby library  class and redefine just the method
> > which initializes the headers used for all HTTP requests. This
> > following code is now in the startup section:
>
> > # Monkey patch Net::HTTP so it always provides a User-Agent
> > # if the request doesn't already specify one.
> > # This compensates for a bug in the tels-develop webstart server which
> > # throws a 500 error for requests w/o a User-Agent header.
> > class Net::HTTPGenericRequest
> >   include Net::HTTPHeader
> >   def initialize(m, reqbody, resbody, path, initheader = nil)
> >     @method = m
> >     @request_has_body = reqbody
> >     @response_has_body = resbody
> >     raise ArgumentError, "HTTP request path is empty" if path.empty?
> >     @path = path
> >     initialize_http_header initheader
> >     self['Accept'] ||= '*/*'
> >     self['User-Agent'] ||= 'Ruby' # this is the new line
> >     @body = nil
> >     @body_stream = nil
> >   end
> > end
>
> > > Hiroki
> > > On 2/10/07, Stephen Bannasch <[EMAIL PROTECTED]> wrote:
> > >         Hi Hiroki,
>
> > >         There is an annoying bug (??) in the tomcat server on
> > >         tels-develop.soe.berkeley.edu:8080 that serves up the jnlps.
> > >         If I
> > >         make an HTTP GET request and do NOT include a 'User-Agent:'
> > >         header
> > >         the server responds with a 'HTTP/1.1 500 Internal Server
> > >         Error'.
>
> > >         Let me know if you can fix this. It's getting in the way of
> > >         converting the SDS to jruby.
>
> > >         You can test this yourself with the following curl commands:
>
> > >         1) This command works. Curl automatically sends the
> > >         following header
> > >         in the request:
>
> > >         User-Agent: curl/7.13.1 (powerpc-apple-darwin8.0)
> > >         libcurl/7.13.1
> > >         OpenSSL/0.9.7l zlib/1.2.3
>
> > >         curl -i
> > >        
> > > http://tels-develop.soe.berkeley.edu:8080/maven-jnlp-snapshot/plr-eve...
>
> > >         2) This command produces a 500 error from the server. Adding
> > >         the
> > >         header option and leaving a null string to the right of the
> > >         colon:
> > >         "-H 'User-Agent:'" causes curl to leave out the header in
> > >         it's
> > >         request.
>
> > >         curl -i  -H 'User-Agent:'
> > >        
> > > http://tels-develop.soe.berkeley.edu:8080/maven-jnlp-snapshot/plr-eve...
>
> > >         if you add the options "--trace curldump.txt" to the curl
> > >         command you
> > >         can see curl's detailed trace in the file curldump.txt.
> > >         --
> > >         - Stephen Bannasch
> > >            Concord Consortium,http://www.concord.org
>
> > --
> > - Stephen Bannasch
> >   Concord Consortium,http://www.concord.org


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"SAIL-Dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/SAIL-Dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to