dblevins 2005/03/25 21:43:34
Modified: modules/core/src/java/org/openejb/server/axis
WSContainer.java WSContainerGBean.java
Log:
Basic handler support. More work to be done on EJB sercurity/handlers.
Revision Changes Path
1.6 +11 -2
openejb/modules/core/src/java/org/openejb/server/axis/WSContainer.java
Index: WSContainer.java
===================================================================
RCS file:
/scm/openejb/openejb/modules/core/src/java/org/openejb/server/axis/WSContainer.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- WSContainer.java 20 Mar 2005 21:36:25 -0000 1.5
+++ WSContainer.java 26 Mar 2005 02:43:34 -0000 1.6
@@ -49,8 +49,10 @@
import org.apache.axis.description.JavaServiceDesc;
import org.apache.axis.handlers.soap.SOAPService;
+import org.apache.axis.handlers.HandlerInfoChainFactory;
import org.apache.axis.providers.java.RPCProvider;
import org.apache.geronimo.axis.server.AxisWebServiceContainer;
+import org.apache.geronimo.axis.builder.ServiceInfo;
import org.apache.geronimo.webservices.SoapHandler;
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.openejb.EJBContainer;
@@ -65,17 +67,24 @@
location = null;
}
- public WSContainer(EJBContainer ejbContainer, URI location, URI wsdlURI,
SoapHandler soapHandler, JavaServiceDesc serviceDesc) throws Exception {
+ public WSContainer(EJBContainer ejbContainer, URI location, URI wsdlURI,
SoapHandler soapHandler, ServiceInfo serviceInfo) throws Exception {
try {
+
this.soapHandler = soapHandler;
this.location = location;
+
RPCProvider provider = new EJBContainerProvider(ejbContainer);
SOAPService service = new SOAPService(null, provider, null);
+
+ JavaServiceDesc serviceDesc = serviceInfo.getServiceDesc();
service.setServiceDescription(serviceDesc);
Class serviceEndpointInterface =
ejbContainer.getProxyInfo().getServiceEndpointInterface();
service.setOption("className",
serviceEndpointInterface.getName());
serviceDesc.setImplClass(serviceEndpointInterface);
+
+ HandlerInfoChainFactory handlerInfoChainFactory = new
HandlerInfoChainFactory(serviceInfo.getHanlderInfos());
+
service.setOption(org.apache.axis.Constants.ATTR_HANDLERINFOCHAIN,
handlerInfoChainFactory);
ClassLoader classLoader = ejbContainer.getClassLoader();
String wsdlResource = wsdlURI.toString();
1.3 +8 -7
openejb/modules/core/src/java/org/openejb/server/axis/WSContainerGBean.java
Index: WSContainerGBean.java
===================================================================
RCS file:
/scm/openejb/openejb/modules/core/src/java/org/openejb/server/axis/WSContainerGBean.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- WSContainerGBean.java 18 Mar 2005 07:42:17 -0000 1.2
+++ WSContainerGBean.java 26 Mar 2005 02:43:34 -0000 1.3
@@ -58,6 +58,7 @@
import org.apache.geronimo.kernel.jmx.JMXUtil;
import org.apache.geronimo.webservices.SoapHandler;
import org.apache.geronimo.webservices.WebServiceContainer;
+import org.apache.geronimo.axis.builder.ServiceInfo;
import org.apache.axis.description.JavaServiceDesc;
import org.openejb.EJBContainer;
@@ -74,14 +75,14 @@
infoFactory.addAttribute("location", URI.class, true);
infoFactory.addAttribute("wsdlURI", URI.class, true);
infoFactory.addReference("WebServiceContainer", SoapHandler.class);
- infoFactory.addAttribute("serviceDesc", JavaServiceDesc.class, true);
+ infoFactory.addAttribute("serviceInfo", ServiceInfo.class, true);
infoFactory.setConstructor(new String[]{
"EJBContainer",
"location",
"wsdlURI",
"WebServiceContainer",
- "serviceDesc"
+ "serviceInfo"
});
GBEAN_INFO = infoFactory.getBeanInfo();
@@ -91,14 +92,14 @@
return GBEAN_INFO;
}
- public static ObjectName addGBean(Kernel kernel, String name, ObjectName
ejbContainer, ObjectName listener, URI location, URI wsdlURI, JavaServiceDesc
serviceDesc) throws GBeanAlreadyExistsException, GBeanNotFoundException {
- GBeanData gbean = createGBean(name, ejbContainer, listener,
location, wsdlURI, serviceDesc);
+ public static ObjectName addGBean(Kernel kernel, String name, ObjectName
ejbContainer, ObjectName listener, URI location, URI wsdlURI, ServiceInfo
serviceInfo) throws GBeanAlreadyExistsException, GBeanNotFoundException {
+ GBeanData gbean = createGBean(name, ejbContainer, listener,
location, wsdlURI, serviceInfo);
kernel.loadGBean(gbean, WSContainer.class.getClassLoader());
kernel.startGBean(gbean.getName());
return gbean.getName();
}
- public static GBeanData createGBean(String name, ObjectName
ejbContainer, ObjectName listener, URI location, URI wsdlURI, JavaServiceDesc
serviceDesc) {
+ public static GBeanData createGBean(String name, ObjectName
ejbContainer, ObjectName listener, URI location, URI wsdlURI, ServiceInfo
serviceInfo) {
assert ejbContainer != null : "EJBContainer objectname is null";
ObjectName gbeanName =
JMXUtil.getObjectName("openejb:type=WSContainer,name=" + name);
@@ -107,7 +108,7 @@
gbean.setReferencePattern("EJBContainer", ejbContainer);
gbean.setAttribute("location", location);
gbean.setAttribute("wsdlURI", wsdlURI);
- gbean.setAttribute("serviceDesc", serviceDesc);
+ gbean.setAttribute("serviceInfo", serviceInfo);
gbean.setReferencePattern("WebServiceContainer", listener);