001 /**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.geronimo.j2ee.deployment;
019
020 import org.apache.geronimo.common.DeploymentException;
021 import org.apache.geronimo.gbean.GBeanData;
022 import org.apache.geronimo.deployment.DeploymentContext;
023 import org.apache.geronimo.kernel.repository.Environment;
024 import org.apache.xmlbeans.XmlObject;
025
026 import java.util.jar.JarFile;
027 import java.util.Map;
028
029 /**
030 * @version $Rev: 470597 $ $Date: 2006-11-02 15:30:55 -0800 (Thu, 02 Nov 2006) $
031 */
032 public interface WebServiceBuilder {
033
034 /**
035 * Introspects on the module file to locate web service for deployment.
036 *
037 * @param moduleFile J2EE module
038 * @param isEJB is this an EJB archive?
039 * @param correctedPortLocations mapping between port locations and paths.
040 * @param environment
041 * @return Mapping of servlet names to port information, or an
042 * empty map if no web services found. Port information is opaque
043 * to all except the WebServiceBuilder itself.
044 * @throws DeploymentException if error encountered while introspecting the module.
045 */
046 Map findWebServices(JarFile moduleFile, boolean isEJB, Map correctedPortLocations, Environment environment) throws DeploymentException;
047
048 //obviously these need the deployment descriptors, but I'm not sure in what form yet.
049 /**
050 * configure the supplied GBeanData to implement the POJO web service described in the deployment descriptor.
051 * The GBeanData will be for a ServletHolder like gbean that is adapted to holding a ws stack that talks to a
052 * POJO web service. The web deployer is responsible for filling in the standard servlet info such as init params.
053 * @param targetGBean
054 * @param module
055 * @param portInfo
056 * @param seiClassName
057 * @param context
058 * @throws DeploymentException
059 */
060 void configurePOJO(GBeanData targetGBean, Module module, Object portInfo, String seiClassName, DeploymentContext context) throws DeploymentException;
061
062 /**
063 * configure the supplied EJBContainer gbeandata to implement the ejb web service described in the deployment descriptor
064 * N.B. this method is a complete guess and should be replaced by something useable right away!
065 * @param targetGBean
066 * @param moduleFile
067 * @param classLoader
068 * @throws DeploymentException
069 */
070 void configureEJB(GBeanData targetGBean, JarFile moduleFile, Object portInfo, ClassLoader classLoader) throws DeploymentException;
071
072 }