Class HessianProxyFactory

  • All Implemented Interfaces:
    ServiceProxyFactory, javax.naming.spi.ObjectFactory

    public class HessianProxyFactory
    extends java.lang.Object
    implements ServiceProxyFactory, javax.naming.spi.ObjectFactory
    Factory for creating Hessian client stubs. The returned stub will call the remote object for all methods.
     String url = "http://localhost:8080/ejb/hello";
     HelloHome hello = (HelloHome) factory.create(HelloHome.class, url);
     
    After creation, the stub can be like a regular Java class. Because it makes remote calls, it can throw more exceptions than a Java class. In particular, it may throw protocol exceptions. The factory can also be configured as a JNDI resource. The factory expects to parameters: "type" and "url", corresponding to the two arguments to create In Resin 3.0, the above example would be configured as:
     <reference>
       <jndi-name>hessian/hello</jndi-name>
       <factory>com.caucho.hessian.client.HessianProxyFactory</factory>
       <init-param url="http://localhost:8080/ejb/hello"/>
       <init-param type="test.HelloHome"/>
     </reference>
     
    To get the above resource, use JNDI as follows:
     Context ic = new InitialContext();
     HelloHome hello = (HelloHome) ic.lookup("java:comp/env/hessian/hello");
    
     System.out.println("Hello: " + hello.helloWorld());
     

    Authentication

    The proxy can use HTTP basic authentication if the user and the password are set.

    • Field Detail

      • log

        protected static java.util.logging.Logger log
    • Constructor Detail

      • HessianProxyFactory

        public HessianProxyFactory()
        Creates the new proxy factory.
      • HessianProxyFactory

        public HessianProxyFactory​(java.lang.ClassLoader loader)
        Creates the new proxy factory.
    • Method Detail

      • setUser

        public void setUser​(java.lang.String user)
        Sets the user.
      • setPassword

        public void setPassword​(java.lang.String password)
        Sets the password.
      • getBasicAuth

        public java.lang.String getBasicAuth()
      • setConnectionFactory

        public void setConnectionFactory​(HessianConnectionFactory factory)
        Sets the connection factory to use when connecting to the Hessian service.
      • getConnectionFactory

        public HessianConnectionFactory getConnectionFactory()
        Returns the connection factory to be used for the HTTP request.
      • setDebug

        public void setDebug​(boolean isDebug)
        Sets the debug
      • isDebug

        public boolean isDebug()
        Gets the debug
      • isOverloadEnabled

        public boolean isOverloadEnabled()
        Returns true if overloaded methods are allowed (using mangling)
      • setOverloadEnabled

        public void setOverloadEnabled​(boolean isOverloadEnabled)
        set true if overloaded methods are allowed (using mangling)
      • setChunkedPost

        public void setChunkedPost​(boolean isChunked)
        Set true if should use chunked encoding on the request.
      • isChunkedPost

        public boolean isChunkedPost()
        Set true if should use chunked encoding on the request.
      • getReadTimeout

        public long getReadTimeout()
        The socket timeout on requests in milliseconds.
      • setReadTimeout

        public void setReadTimeout​(long timeout)
        The socket timeout on requests in milliseconds.
      • getConnectTimeout

        public long getConnectTimeout()
        The socket connection timeout in milliseconds.
      • setConnectTimeout

        public void setConnectTimeout​(long timeout)
        The socket connect timeout in milliseconds.
      • setHessian2Reply

        public void setHessian2Reply​(boolean isHessian2)
        True if the proxy can read Hessian 2 responses.
      • setHessian2Request

        public void setHessian2Request​(boolean isHessian2)
        True if the proxy should send Hessian 2 requests.
      • setSerializerFactory

        public void setSerializerFactory​(SerializerFactory factory)
        Sets the serializer factory.
      • getSerializerFactory

        public SerializerFactory getSerializerFactory()
        Gets the serializer factory.
      • create

        public java.lang.Object create​(java.lang.String url)
                                throws java.net.MalformedURLException,
                                       java.lang.ClassNotFoundException
        Creates a new proxy with the specified URL. The API class uses the java.api.class value from _hessian_
        Parameters:
        url - the URL where the client object is located.
        Returns:
        a proxy to the object with the specified interface.
        Throws:
        java.net.MalformedURLException
        java.lang.ClassNotFoundException
      • create

        public java.lang.Object create​(java.lang.Class api,
                                       java.lang.String urlName)
                                throws java.net.MalformedURLException
        Creates a new proxy with the specified URL. The returned object is a proxy with the interface specified by api.
         String url = "http://localhost:8080/ejb/hello");
         HelloHome hello = (HelloHome) factory.create(HelloHome.class, url);
         
        Specified by:
        create in interface ServiceProxyFactory
        Parameters:
        api - the interface the proxy class needs to implement
        url - the URL where the client object is located.
        Returns:
        a proxy to the object with the specified interface.
        Throws:
        java.net.MalformedURLException
      • create

        public java.lang.Object create​(java.lang.Class<?> api,
                                       java.lang.String urlName,
                                       java.lang.ClassLoader loader)
                                throws java.net.MalformedURLException
        Creates a new proxy with the specified URL. The returned object is a proxy with the interface specified by api.
         String url = "http://localhost:8080/ejb/hello");
         HelloHome hello = (HelloHome) factory.create(HelloHome.class, url);
         
        Parameters:
        api - the interface the proxy class needs to implement
        url - the URL where the client object is located.
        Returns:
        a proxy to the object with the specified interface.
        Throws:
        java.net.MalformedURLException
      • create

        public java.lang.Object create​(java.lang.Class<?> api,
                                       java.net.URL url,
                                       java.lang.ClassLoader loader)
        Creates a new proxy with the specified URL. The returned object is a proxy with the interface specified by api.
         String url = "http://localhost:8080/ejb/hello");
         HelloHome hello = (HelloHome) factory.create(HelloHome.class, url);
         
        Parameters:
        api - the interface the proxy class needs to implement
        url - the URL where the client object is located.
        Returns:
        a proxy to the object with the specified interface.
      • getObjectInstance

        public java.lang.Object getObjectInstance​(java.lang.Object obj,
                                                  javax.naming.Name name,
                                                  javax.naming.Context nameCtx,
                                                  java.util.Hashtable<?,​?> environment)
                                           throws java.lang.Exception
        JNDI object factory so the proxy can be used as a resource.
        Specified by:
        getObjectInstance in interface javax.naming.spi.ObjectFactory
        Throws:
        java.lang.Exception
      • encode

        public static char encode​(long d)