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 }