View Javadoc

    1   /*
    2    *
    3    * The Seasar Software License, Version 1.1
    4    *
    5    * Copyright (c) 2003-2004 The Seasar Project. All rights reserved.
    6    *
    7    * Redistribution and use in source and binary forms, with or
    8    * without modification, are permitted provided that the following
    9    * conditions are met:
    10   *
    11   * 1. Redistributions of source code must retain the above
    12   *    copyright notice, this list of conditions and the following
    13   *    disclaimer.
    14   *
    15   * 2. Redistributions in binary form must reproduce the above
    16   *    copyright notice, this list of conditions and the following
    17   *    disclaimer in the documentation and/or other materials provided
    18   *    with the distribution.
    19   *
    20   * 3. The end-user documentation included with the redistribution,
    21   *    if any, must include the following acknowledgement:
    22   *    "This product includes software developed by the
    23   *    Seasar Project (http://www.seasar.org/)."
    24   *    Alternately, this acknowledgement may appear in the software
    25   *    itself, if and wherever such third-party acknowledgements
    26   *    normally appear.
    27   *
    28   * 4. Neither the name "The Seasar Project" nor the names of its
    29   *    contributors may be used to endorse or promote products derived
    30   *    from this software without specific prior written permission of
    31   *    the Seasar Project.
    32   *
    33   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR
    34   * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    35   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    36   * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE SEASAR PROJECT
    37   * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
    38   * INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    39   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    40   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    41   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    42   * WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING
    43   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    44   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    45   */
    46  package org.seasar.remoting.axis.deployer;
    47
    48  import java.io.InputStream;
    49
    50  import org.apache.axis.deployment.wsdd.WSDDDocument;
    51  import org.apache.axis.utils.XMLUtils;
    52  import org.seasar.framework.container.ComponentDef;
    53  import org.seasar.framework.container.MetaDef;
    54  import org.seasar.framework.log.Logger;
    55  import org.seasar.framework.message.MessageFormatter;
    56  import org.seasar.framework.util.ResourceUtil;
    57  import org.seasar.remoting.axis.DeployFailedException;
    58
    59  /***
    60   * diconファイル中に記述されたメタ情報で指定されたWSDDファイルをAxisにデプロイします。
    61   *
    62   * @author koichik
    63   */
    64  public class WSDDDeployer implements ItemDeployer {
    65      //class fields
    66      private static final Logger logger = Logger.getLogger(WSDDDeployer.class);
    67
    68      //instance fields
    69      protected final AxisDeployer deployer;
    70
    71      /***
    72       * インスタンスを構築します。
    73       *
    74       * @param deployer
    75       *            デプロイヤー
    76       */
    77      public WSDDDeployer(final AxisDeployer deployer) {
    78          this.deployer = deployer;
    79      }
    80
    81      /***
    82       * メタ情報で指定されたWSDDファイルをデプロイします。
    83       *
    84       * @param componentDef
    85       *            コンポーネント定義
    86       * @param metaDef
    87       *            メタ定義
    88       */
    89      public void deploy(final ComponentDef componentDef, final MetaDef metaDef) {
    90          try {
    91              final Object value = metaDef.getValue();
    92              if (!(value instanceof String)) {
    93                  throw new DeployFailedException(MessageFormatter.getSimpleMessage("EAXS0002",
    94                          new Object[] { value }));
    95              }
    96
    97              final String wsddFileName = (String) value;
    98              final InputStream is = ResourceUtil.getResourceAsStream(wsddFileName);
    99              final WSDDDocument wsddDocument = new WSDDDocument(XMLUtils.newDocument(is));
    100             wsddDocument.deploy(deployer.getDeployment(metaDef.getContainer()));
    101
    102             if (logger.isDebugEnabled()) {
    103                 logger.log("DAXS0001", new Object[] { wsddFileName });
    104             }
    105         }
    106         catch (final Exception e) {
    107             throw new DeployFailedException(e);
    108         }
    109     }
    110 }