hi all,
  I'm using Hessian/Burlap protocol (3.0.19) in a client/server application

  the server uses the SpringFramework with Apache + Tomcat 5.5.12 using 
AJP3 connector

  when the client creates a HessianProxy or BurlapProxy the ProxyFactory 
makes a GET request to the server
  using Hessian and the apache URL this request hangs (until client 
timeout expires), it also hangs calling Tomcat server directly

  using Burlap and the apache URL the request also hangs (forever, since 
BurlapProxyFactory has no timeout parameter), calling Tomcat server 
directly this request hangs until Tomcat connectionTimeout expires 
throwing a Read Timeout exception.

 in other enviroments (development) this call makes the server to throw 
the following exception:

com.caucho.burlap.io.BurlapProtocolException: expected '<' at end of file
        at com.caucho.burlap.io.BurlapInput.error(BurlapInput.java:1657)
        at 
com.caucho.burlap.io.BurlapInput.expectedChar(BurlapInput.java:1645)
        at com.caucho.burlap.io.BurlapInput.parseTag(BurlapInput.java:1545)
        at com.caucho.burlap.io.BurlapInput.expectTag(BurlapInput.java:1523)
        at com.caucho.burlap.io.BurlapInput.readCall(BurlapInput.java:250)
        at 
com.caucho.burlap.server.BurlapSkeleton.invoke(BurlapSkeleton.java:93)
        at 
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:684)
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:625)
        at 
org.springframework.web.servlet.FrameworkServlet.serviceWrapper(FrameworkServlet.java:386)
        at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:346)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at 
org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:495)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
        at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at 
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)


 I have located the source code that makes this call in 
BurlapProxyFactory.create(), and recompiled the library with the 
following lines commented and everything works.

   public Object create(Class api, String urlName)
    throws MalformedURLException
  {
    URL url = new URL(urlName);

//    try {
//      // clear old keepalive connections
//      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//
//      conn.setRequestProperty("Connection", "close");
//
//      InputStream is = conn.getInputStream();
//
//      is.close();
//
//      conn.disconnect();
//    } catch (IOException e) {
//        e.printStackTrace();
//    }
   
    BurlapProxy handler = new BurlapProxy(this, url);

    return Proxy.newProxyInstance(api.getClassLoader(),
                                  new Class[] { api,
                                                BurlapRemoteObject.class },
                                  handler);
  }


may I expect any problem from this change?

what are the licensing issues about hessian/burlap code 
modification/reuse? I would like to add a connection timeout parameter 
to BurlapProxyFactory.

best regards

-- 
rodolfo martín
tecnología
tlf : 91 788 60 96 | ext: 159
www.idealista.com



_______________________________________________
hessian-interest mailing list
[email protected]
http://maillist.caucho.com/mailman/listinfo/hessian-interest

Reply via email to