001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.axis2.ejb;
019
020 import java.net.URL;
021
022 import javax.naming.Context;
023
024 import org.apache.geronimo.gbean.GBeanInfo;
025 import org.apache.geronimo.gbean.GBeanInfoBuilder;
026 import org.apache.geronimo.gbean.GBeanLifecycle;
027 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
028 import org.apache.geronimo.jaxws.PortInfo;
029 import org.apache.geronimo.kernel.Kernel;
030 import org.apache.geronimo.openejb.EjbDeployment;
031 import org.apache.geronimo.webservices.SoapHandler;
032 import org.apache.openejb.DeploymentInfo;
033
034 /**
035 * @version $Rev$ $Date$
036 */
037 public class EJBWebServiceGBean implements GBeanLifecycle {
038
039 private SoapHandler soapHandler;
040 private String location;
041 private EJBWebServiceContainer container;
042
043 public EJBWebServiceGBean(EjbDeployment ejbDeploymentContext,
044 PortInfo portInfo,
045 Kernel kernel,
046 URL configurationBaseUrl,
047 SoapHandler soapHandler,
048 String securityRealmName,
049 String realmName,
050 String transportGuarantee,
051 String authMethod,
052 String[] virtualHosts) throws Exception {
053 if (ejbDeploymentContext == null || soapHandler == null || portInfo == null) {
054 return;
055 }
056
057 this.soapHandler = soapHandler;
058 this.location = portInfo.getLocation();
059
060 assert this.location != null : "null location received";
061
062 String beanClassName = ejbDeploymentContext.getBeanClass().getName();
063 Context context = ejbDeploymentContext.getComponentContext();
064 ClassLoader classLoader = ejbDeploymentContext.getClassLoader();
065 DeploymentInfo deploymnetInfo = ejbDeploymentContext.getDeploymentInfo();
066
067 this.container =
068 new EJBWebServiceContainer(portInfo, beanClassName, classLoader,
069 context, configurationBaseUrl, deploymnetInfo);
070 this.container.init();
071
072 if (soapHandler != null) {
073 soapHandler.addWebService(this.location,
074 virtualHosts,
075 this.container,
076 securityRealmName,
077 realmName,
078 transportGuarantee,
079 authMethod,
080 classLoader);
081 }
082
083 }
084
085 public void doStart() throws Exception {
086 }
087
088 public void doStop() throws Exception {
089 if (this.soapHandler != null) {
090 this.soapHandler.removeWebService(this.location);
091 }
092 if (this.container != null) {
093 this.container.destroy();
094 }
095 }
096
097 public void doFail() {
098 }
099
100 public static final GBeanInfo GBEAN_INFO;
101
102 static {
103 GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic(EJBWebServiceGBean.class, EJBWebServiceGBean.class, NameFactory.WEB_SERVICE_LINK);
104
105 infoFactory.addReference("EjbDeployment", EjbDeployment.class);
106 infoFactory.addAttribute("portInfo", PortInfo.class, true);
107 infoFactory.addAttribute("kernel", Kernel.class, false);
108 infoFactory.addAttribute("configurationBaseUrl", URL.class, true);
109 infoFactory.addAttribute("securityRealmName", String.class, true);
110 infoFactory.addAttribute("realmName", String.class, true);
111 infoFactory.addAttribute("transportGuarantee", String.class, true);
112 infoFactory.addAttribute("authMethod", String.class, true);
113 infoFactory.addAttribute("virtualHosts", String[].class, true);
114 infoFactory.addReference("WebServiceContainer", SoapHandler.class);
115
116 infoFactory.setConstructor(new String[]{
117 "EjbDeployment",
118 "portInfo",
119 "kernel",
120 "configurationBaseUrl",
121 "WebServiceContainer",
122 "securityRealmName",
123 "realmName",
124 "transportGuarantee",
125 "authMethod",
126 "virtualHosts"
127 });
128
129
130 GBEAN_INFO = infoFactory.getBeanInfo();
131 }
132
133 public static GBeanInfo getGBeanInfo() {
134 return GBEAN_INFO;
135 }
136
137 }