View Javadoc
1   package net.sf.crispy.impl;
2   
3   import java.util.Properties;
4   
5   import net.sf.crispy.InvocationException;
6   import net.sf.crispy.InvocationStrategy;
7   import net.sf.crispy.proxy.StaticProxy;
8   import net.sf.crispy.strategy.NameInvocationStrategy;
9   
10  import com.caucho.hessian.client.HessianProxyFactory;
11  
12  /**
13   * Remote-Call with Hessian Remote Invocation (Caucho).
14   * 
15   * @author Linke
16   *
17   */
18  public class StaticHessianProxy extends StaticProxy {
19  
20  	public final static String DEFAULT_URL_AND_PORT = "http://localhost:8091/crispy/hessian";
21  		
22      /**
23       * Get default url and port. If no url and port is in properties.
24       *  
25       * @return Default url and port.
26       */
27      public String getDefaultUrlAndPort() {
28      	return DEFAULT_URL_AND_PORT;
29      }
30  
31      public InvocationStrategy getDefaultInvocationStrategy(Properties pvProperties) {
32      	String lvInterfaceName = (String) pvProperties.get(PROPERTY_CURRENT_INTERFACE_CLASS);
33      	return new NameInvocationStrategy(lvInterfaceName);
34      }
35      
36  	/**
37  	 * @see net.sf.crispy.proxy.Proxy#newInstance(java.lang.Class)
38  	 */
39  	public Object newInstance(Class pvProxyClass) {
40  		String lvUrlAndPort = getUrlAndPort() + "/" + getInvocationStrategy();
41  		if (log.isDebugEnabled()) { log.debug("Hessian Url and Port: " + lvUrlAndPort); }
42  		HessianProxyFactory factory = new HessianProxyFactory();
43  		factory.setOverloadEnabled(true);
44  		try {
45  			Object lvProxyObject = factory.create(pvProxyClass, lvUrlAndPort);
46  			setProxyObject(lvProxyObject);
47  			setProxyClass(lvProxyObject.getClass());
48  		} catch (Exception e) {
49  			throw new InvocationException("Error in newInstance in StaticHessianProxy: " + e, e);
50  		}
51  		if (log.isDebugEnabled()) { log.debug("Hessian Object created: " + getProxyObject()); }
52  		return getProxyObject();
53  	}
54  }