1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package ch.elca.el4j.services.remoting.protocol;
19
20 import org.springframework.beans.MutablePropertyValues;
21 import org.springframework.context.support.StaticApplicationContext;
22 import org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean;
23 import org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter;
24
25 import ch.elca.el4j.services.remoting.AbstractRemotingBase;
26 import ch.elca.el4j.services.remoting.RemotingProxyFactoryBean;
27 import ch.elca.el4j.services.remoting.RemotingServiceExporter;
28
29
30
31
32
33
34
35
36 public class HttpInvoker extends AbstractInetSocketAddressWebProtocol {
37
38
39
40
41 public Object createProxyBean(RemotingProxyFactoryBean proxyBean,
42 Class serviceInterfaceWithContext) {
43 StaticApplicationContext appContext = new StaticApplicationContext(
44 m_parentApplicationContext);
45 registerChildApplicationContext(appContext);
46 MutablePropertyValues props = new MutablePropertyValues();
47 props.addPropertyValue("serviceInterface", serviceInterfaceWithContext);
48 props.addPropertyValue("serviceUrl", generateUrl(proxyBean));
49 appContext.registerSingleton("httpInvokerProxyBeanGen",
50 getProxyObjectType(), props);
51 appContext.refresh();
52 return appContext.getBean("httpInvokerProxyBeanGen");
53 }
54
55
56
57
58 public Object createExporterBean(RemotingServiceExporter exporterBean,
59 Class serviceInterfaceWithContext, Object serviceProxy) {
60 StaticApplicationContext appContext = new StaticApplicationContext(
61 m_parentApplicationContext);
62 registerChildApplicationContext(appContext);
63 MutablePropertyValues props = new MutablePropertyValues();
64 props.addPropertyValue("service", serviceProxy);
65 props.addPropertyValue("serviceInterface", serviceInterfaceWithContext);
66 appContext.registerSingleton("httpInvokerExporterBeanGen",
67 getExporterObjectType(), props);
68 appContext.refresh();
69 return appContext.getBean("httpInvokerExporterBeanGen");
70 }
71
72
73
74
75 public Class getProxyObjectType() {
76 return HttpInvokerProxyFactoryBean.class;
77 }
78
79
80
81
82 public Class getExporterObjectType() {
83 return HttpInvokerServiceExporter.class;
84 }
85
86
87
88
89 public String generateUrl(AbstractRemotingBase remoteBase) {
90 StringBuffer sb = new StringBuffer();
91 sb.append("http://");
92 sb.append(getServiceHost());
93 sb.append(":");
94 sb.append(getServicePort());
95 sb.append("/");
96 sb.append(getContextPath());
97 sb.append("/");
98 sb.append(remoteBase.getServiceName());
99 return sb.toString();
100 }
101 }