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 }