001 /** 002 * 003 * Copyright 2003-2004 The Apache Software Foundation 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * 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 // 019 // This source code implements specifications defined by the Java 020 // Community Process. In order to remain compliant with the specification 021 // DO NOT add / change / or delete method signatures! 022 // 023 024 package javax.enterprise.deploy.spi; 025 026 import javax.enterprise.deploy.spi.exceptions.DConfigBeanVersionUnsupportedException; 027 import javax.enterprise.deploy.spi.exceptions.TargetException; 028 import javax.enterprise.deploy.spi.exceptions.InvalidModuleException; 029 import javax.enterprise.deploy.spi.status.ProgressObject; 030 import javax.enterprise.deploy.shared.DConfigBeanVersionType; 031 import javax.enterprise.deploy.shared.ModuleType; 032 import javax.enterprise.deploy.model.DeployableObject; 033 import java.io.File; 034 import java.io.InputStream; 035 import java.util.Locale; 036 037 /** 038 * The DeploymentManager object provides the core set of functions a J2EE platform 039 * must provide for J2EE application deployment. It provides server related 040 * information, such as, a list of deployment targets, and vendor unique runtime 041 * configuration information. 042 * 043 * @version $Rev: 46019 $ $Date: 2004-09-14 02:56:06 -0700 (Tue, 14 Sep 2004) $ 044 */ 045 public interface DeploymentManager { 046 /** 047 * Retrieve the list of deployment targets supported by this DeploymentManager. 048 * 049 * @return A list of deployment Target designators the user may select for 050 * application deployment or <code>null</code> if there are none. 051 * 052 * @throws IllegalStateException is thrown when the method is called when 053 * running in disconnected mode. 054 */ 055 public Target[] getTargets() throws IllegalStateException; 056 057 /** 058 * Retrieve the list of J2EE application modules distributed to the identified 059 * targets and that are currently running on the associated server or servers. 060 * 061 * @param moduleType A predefined designator for a J2EE module type. 062 * @param targetList A list of deployment Target designators the user wants 063 * checked for module run status. 064 * 065 * @return An array of TargetModuleID objects representing the running modules 066 * or <code>null</code> if there are none. 067 * 068 * @throws TargetException occurs when an invalid Target was provided. 069 * @throws IllegalStateException is thrown when the method is called when running 070 * in disconnected mode. 071 */ 072 public TargetModuleID[] getRunningModules(ModuleType moduleType, Target[] targetList) throws TargetException, IllegalStateException; 073 074 /** 075 * Retrieve the list of J2EE application modules distributed to the identified 076 * targets and that are currently not running on the associated server or servers. 077 * 078 * @param moduleType A predefined designator for a J2EE module type. 079 * @param targetList A list of deployment Target designators the user wants checked 080 * for module not running status. 081 * 082 * @return An array of TargetModuleID objects representing the non-running modules 083 * or <code>null</code> if there are none. 084 * 085 * @throws TargetException occurs when an invalid Target was provided. 086 * @throws IllegalStateException is thrown when the method is called when running 087 * in disconnected mode. 088 */ 089 public TargetModuleID[] getNonRunningModules(ModuleType moduleType, Target[] targetList) throws TargetException, IllegalStateException; 090 091 /** 092 * Retrieve the list of all J2EE application modules running or not running on the 093 * identified targets. 094 * 095 * @param moduleType A predefined designator for a J2EE module type. 096 * @param targetList A list of deployment Target designators the user wants checked 097 * for module not running status. 098 * 099 * @return An array of TargetModuleID objects representing all deployed modules 100 * running or not or <code>null</code> if there are no deployed modules. 101 * 102 * @throws TargetException occurs when an invalid Target was provided. 103 * @throws IllegalStateException is thrown when the method is called when running 104 * in disconnected mode. 105 */ 106 public TargetModuleID[] getAvailableModules(ModuleType moduleType, Target[] targetList) throws TargetException, IllegalStateException; 107 108 /** 109 * Retrieve the object that provides server-specific deployment configuration 110 * information for the J2EE deployable component. 111 * 112 * @param dObj An object representing a J2EE deployable component. 113 * 114 * @return An object used to configure server-specific deployment information 115 * 116 * @throws InvalidModuleException The DeployableObject is an unknown or unsupported 117 * component for this configuration tool. 118 */ 119 public DeploymentConfiguration createConfiguration(DeployableObject dObj) throws InvalidModuleException; 120 121 /** 122 * The distribute method performs three tasks; it validates the deployment 123 * configuration data, generates all container specific classes and interfaces, 124 * and moves the fully baked archive to the designated deployment targets. 125 * 126 * @param targetList A list of server targets the user is specifying this application 127 * should be deployed to. 128 * @param moduleArchive The file name of the application archive to be distributed. 129 * @param deploymentPlan The file containing the runtime configuration information 130 * associated with this application archive. 131 * 132 * @return an object that tracks and reports the status of the distribution process. 133 * 134 * @throws IllegalStateException is thrown when the method is called when running in disconnected mode. 135 */ 136 public ProgressObject distribute(Target[] targetList, File moduleArchive, File deploymentPlan) throws IllegalStateException; 137 138 /** 139 * The distribute method performs three tasks; it validates the deployment 140 * configuration data, generates all container specific classes and interfaces, 141 * and moves the fully baked archive to the designated deployment targets. 142 * 143 * @param targetList A list of server targets the user is specifying this application 144 * should be deployed to. 145 * @param moduleArchive The stream containing the application archive to be distributed. 146 * @param deploymentPlan The stream containing the runtime configuration information 147 * associated with this application archive. 148 * 149 * @return an object that tracks and reports the status of the distribution process. 150 * 151 * @throws IllegalStateException is thrown when the method is called when running in disconnected mode. 152 */ 153 public ProgressObject distribute(Target[] targetList, InputStream moduleArchive, InputStream deploymentPlan) throws IllegalStateException; 154 155 /** 156 * Start the application running. 157 * 158 * <p>Only the TargetModuleIDs which represent a root module are valid for being 159 * started. A root TargetModuleID has no parent. A TargetModuleID with a parent 160 * can not be individually started. A root TargetModuleID module and all its 161 * child modules will be started.</p> 162 * 163 * @param moduleIDList An array of TargetModuleID objects representing the modules to be started. 164 * 165 * @return An object that tracks and reports the status of the start operation. 166 * 167 * @throws IllegalStateException is thrown when the method is called when running in disconnected mode. 168 */ 169 public ProgressObject start(TargetModuleID[] moduleIDList) throws IllegalStateException; 170 171 /** 172 * Stop the application running. 173 * 174 * <p>Only the TargetModuleIDs which represent a root module are valid for 175 * being stopped. A root TargetModuleID has no parent. A TargetModuleID 176 * with a parent can not be individually stopped. A root TargetModuleID 177 * module and all its child modules will be stopped.</p> 178 * 179 * @param moduleIDList An array of TargetModuleID objects representing the modules to be stopped. 180 * 181 * @return An object that tracks and reports the status of the stop operation. 182 * 183 * @throws IllegalStateException is thrown when the method is called when running in disconnected mode. 184 */ 185 public ProgressObject stop(TargetModuleID[] moduleIDList) throws IllegalStateException; 186 187 /** 188 * Remove the application from the target server. 189 * 190 * <p>Only the TargetModuleIDs which represent a root module are valid for 191 * undeployment. A root TargetModuleID has no parent. A TargetModuleID with 192 * a parent can not be undeployed. A root TargetModuleID module and all its 193 * child modules will be undeployed. The root TargetModuleID module and all 194 * its child modules must stopped before they can be undeployed. 195 * 196 * @param moduleIDList An array of TargetModuleID objects representing the root 197 * modules to be undeployed. 198 * 199 * @return An object that tracks and reports the status of the stop operation. 200 * 201 * @throws IllegalStateException is thrown when the method is called when running in disconnected mode. 202 */ 203 public ProgressObject undeploy(TargetModuleID[] moduleIDList) throws IllegalStateException; 204 205 /** 206 * This method designates whether this platform vendor provides application 207 * redeployment functionality. A value of true means it is supported. False 208 * means it is not. 209 * 210 * @return A value of true means redeployment is supported by this vendor's 211 * DeploymentManager. False means it is not. 212 */ 213 public boolean isRedeploySupported(); 214 215 /** 216 * (optional) The redeploy method provides a means for updating currently 217 * deployed J2EE applications. This is an optional method for vendor 218 * implementation. Redeploy replaces a currently deployed application with an 219 * updated version. The runtime configuration information for the updated 220 * application must remain identical to the application it is updating. When 221 * an application update is redeployed, all existing client connections to the 222 * original running application must not be disrupted; new clients will connect 223 * to the application update. This operation is valid for TargetModuleIDs that 224 * represent a root module. A root TargetModuleID has no parent. A root 225 * TargetModuleID module and all its child modules will be redeployed. A child 226 * TargetModuleID module cannot be individually redeployed. The redeploy 227 * operation is complete only when this action for all the modules has completed. 228 * 229 * @param moduleIDList An array of designators of the applications to be updated. 230 * @param moduleArchive The file name of the application archive to be redeployed. 231 * @param deploymentPlan The deployment configuration information associated with 232 * this application archive. 233 * 234 * @return An object that tracks and reports the status of the redeploy operation. 235 * 236 * @throws UnsupportedOperationException this optional command is not supported by 237 * this implementation. 238 * @throws IllegalStateException is thrown when the method is called when running 239 * in disconnected mode. 240 */ 241 public ProgressObject redeploy(TargetModuleID[] moduleIDList, File moduleArchive, File deploymentPlan) throws UnsupportedOperationException, IllegalStateException; 242 243 /** 244 * (optional) The redeploy method provides a means for updating currently 245 * deployed J2EE applications. This is an optional method for vendor 246 * implementation. Redeploy replaces a currently deployed application with an 247 * updated version. The runtime configuration information for the updated 248 * application must remain identical to the application it is updating. When 249 * an application update is redeployed, all existing client connections to the 250 * original running application must not be disrupted; new clients will connect 251 * to the application update. This operation is valid for TargetModuleIDs that 252 * represent a root module. A root TargetModuleID has no parent. A root 253 * TargetModuleID module and all its child modules will be redeployed. A child 254 * TargetModuleID module cannot be individually redeployed. The redeploy 255 * operation is complete only when this action for all the modules has completed. 256 * 257 * @param moduleIDList An array of designators of the applications to be updated. 258 * @param moduleArchive The stream containing the application archive to be redeployed. 259 * @param deploymentPlan The streeam containing the deployment configuration information 260 * associated with this application archive. 261 * 262 * @return An object that tracks and reports the status of the redeploy operation. 263 * 264 * @throws UnsupportedOperationException this optional command is not supported by 265 * this implementation. 266 * @throws IllegalStateException is thrown when the method is called when running 267 * in disconnected mode. 268 */ 269 public ProgressObject redeploy(TargetModuleID[] moduleIDList, InputStream moduleArchive, InputStream deploymentPlan) throws UnsupportedOperationException, IllegalStateException; 270 271 /** 272 * The release method is the mechanism by which the tool signals to the 273 * DeploymentManager that the tool does not need it to continue running 274 * connected to the platform. The tool may be signaling it wants to run in a 275 * disconnected mode or it is planning to shutdown. When release is called the 276 * DeploymentManager may close any J2EE resource connections it had for 277 * deployment configuration and perform other related resource cleanup. It 278 * should not accept any new operation requests (i.e., distribute, start, stop, 279 * undeploy, redeploy. It should finish any operations that are currently in 280 * process. Each ProgressObject associated with a running operation should be 281 * marked as released (see the ProgressObject). 282 */ 283 public void release(); 284 285 /** 286 * Returns the default locale supported by this implementation of 287 * javax.enterprise.deploy.spi subpackages. 288 * 289 * @return the default locale for this implementation. 290 */ 291 public Locale getDefaultLocale(); 292 293 /** 294 * Returns the active locale this implementation of 295 * javax.enterprise.deploy.spi subpackages is running. 296 * 297 * @return the active locale of this implementation. 298 */ 299 public Locale getCurrentLocale(); 300 301 /** 302 * Set the active locale for this implementation of 303 * javax.enterprise.deploy.spi subpackages to run. 304 * 305 * @param locale the locale to set 306 * 307 * @throws UnsupportedOperationException the provide locale is not supported. 308 */ 309 public void setLocale(Locale locale) throws UnsupportedOperationException; 310 311 /** 312 * Returns an array of supported locales for this implementation. 313 * 314 * @return the list of supported locales. 315 */ 316 public Locale[] getSupportedLocales(); 317 318 /** 319 * Reports if this implementation supports the designated locale. 320 * 321 * @param locale the locale to check 322 * 323 * @return A value of <code>true</code> means it is supported and <code>false</code> it is not. 324 */ 325 public boolean isLocaleSupported(Locale locale); 326 327 /** 328 * Returns the J2EE platform version number for which the configuration 329 * beans are provided. The beans must have been compiled with the J2SE 330 * version required by the J2EE platform. 331 * 332 * @return a DConfigBeanVersionType object representing the platform 333 * version number for which these beans are provided. 334 */ 335 public DConfigBeanVersionType getDConfigBeanVersion(); 336 337 /** 338 * Returns <code>true</code> if the configuration beans support the J2EE platform 339 * version specified. It returns <code>false</code> if the version is not supported. 340 * 341 * @param version a DConfigBeanVersionType object representing the J2EE 342 * platform version for which support is requested. 343 * 344 * @return <code>true</code> if the version is supported and 'false if not. 345 */ 346 public boolean isDConfigBeanVersionSupported(DConfigBeanVersionType version); 347 348 /** 349 * Set the configuration beans to be used to the J2EE platform version specified. 350 * 351 * @param version a DConfigBeanVersionType object representing the J2EE 352 * platform version for which support is requested. 353 * 354 * @throws DConfigBeanVersionUnsupportedException when the requested bean 355 * version is not supported. 356 */ 357 public void setDConfigBeanVersion(DConfigBeanVersionType version) throws DConfigBeanVersionUnsupportedException; 358 }