1.首先通过axis工具根据wsdl文件生成java代码和wsdd文件
set Axis_Lib=/Users/apple/configuration/axis-1_4/lib //lib文件目录
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=/Users/apple/configuration/axis-1_4 //axis1.4工具存放的目录
set Package=com.cong.HelloWorld //java代码包名
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% /Users/apple/configuration/wsdl/smsConfigService.wsdl //wsdl文件存放的目录
2.将java代码copy到项目的指定目录
3.在pom文件中
org.apache.axis axis 1.4 javax.xml jaxrpc 1.1 wsdl4j wsdl4j 1.6.1 commons-discovery commons-discovery 0.2
4.在resource下新建server-config.wsdd文件,将wsdd文件copy进去,增加全局设置(globalConfiguration)和transport
5.在启动类上加上@ServletComponentScan
6.增加WebServlet类
import org.apache.axis.transport.http.AxisServlet; @javax.servlet.annotation.WebServlet( urlPatterns = "/services/*", loadOnStartup = 1, name = "AxisServlet" ) public class WebServlet extends AxisServlet { //无具体代码,使用注解的形式 }
7.新建包org.apache.axis.configuration
8.在新建的包下新建EngineConfigurationFactoryServlet类,集成EngineConfigurationFactoryDefault
package org.apache.axis.configuration; /* * Copyright 2002-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.apache.axis.AxisProperties; import org.apache.axis.ConfigurationException; import org.apache.axis.EngineConfiguration; import org.apache.axis.EngineConfigurationFactory; import org.apache.axis.components.logger.LogFactory; import org.apache.axis.configuration.EngineConfigurationFactoryDefault; import org.apache.axis.configuration.EngineConfigurationFactoryFinder; import org.apache.axis.configuration.FileProvider; import org.apache.axis.server.AxisServer; import org.apache.axis.utils.ClassUtils; import org.apache.axis.utils.Messages; import org.apache.commons.logging.Log; import javax.servlet.ServletConfig; import java.io.InputStream; /** * This is a default implementation of ServletEngineConfigurationFactory. * It is user-overrideable by a system property without affecting * the caller. If you decide to override it, use delegation if * you want to inherit the behaviour of this class as using * class extension will result in tight loops. That is, your * class should implement EngineConfigurationFactory and keep * an instance of this class in a member field and delegate * methods to that instance when the default behaviour is * required. * * @author Richard A. Sitze * @author Davanum Srinivas ([email protected]) */ public class EngineConfigurationFactoryServlet extends EngineConfigurationFactoryDefault { protected static Log log = LogFactory.getLog(EngineConfigurationFactoryServlet.class.getName()); private ServletConfig cfg; /** * Creates and returns a new EngineConfigurationFactory. * If a factory cannot be created, return 'null'. * * The factory may return non-NULL only if: * - it knows what to do with the param (param instanceof ServletContext) * - it can find it's configuration information * * @see EngineConfigurationFactoryFinder */ public static EngineConfigurationFactory newFactory(Object param) { /** * Default, let this one go through if we find a ServletContext. * * The REAL reason we are not trying to make any * decision here is because it's impossible * (without refactoring FileProvider) to determine * if a *.wsdd file is present or not until the configuration * is bound to an engine. * * FileProvider/EngineConfiguration pretend to be independent, * but they are tightly bound to an engine instance... */ return (param instanceof ServletConfig) ? new EngineConfigurationFactoryServlet((ServletConfig)param) : null; } /** * Create the default engine configuration and detect whether the user * has overridden this with their own. */ protected EngineConfigurationFactoryServlet(ServletConfig conf) { super(); this.cfg = conf; } /** * Get a default server engine configuration. * * @return a server EngineConfiguration */ public EngineConfiguration getServerEngineConfig() { return getServerEngineConfig(cfg); } /** * Get a default server engine configuration in a servlet environment. * //* @param ctx a ServletContext * @return a server EngineConfiguration */ private static EngineConfiguration getServerEngineConfig(ServletConfig cfg) { String configFile = cfg.getInitParameter(OPTION_SERVER_CONFIG_FILE); if (configFile == null) configFile = AxisProperties.getProperty(OPTION_SERVER_CONFIG_FILE); if (configFile == null) { configFile = SERVER_CONFIG_FILE; } String appWebInfPath = "/"; //由于部署方式变更为jar部署,此处不可以使用改方式获取路径 // ServletContext ctx = cfg.getServletContext(); // String realWebInfPath = ctx.getRealPath(appWebInfPath); FileProvider config = null; String realWebInfPath = EngineConfigurationFactoryServlet.class.getResource(appWebInfPath).getPath(); InputStream iss = ClassUtils.getResourceAsStream(EngineConfigurationFactoryServlet.class, appWebInfPath+"/" + SERVER_CONFIG_FILE); if (iss != null) { // FileProvider assumes responsibility for 'is': // do NOT call is.close(). config = new FileProvider(iss); } if (config == null) { log.error(Messages.getMessage("servletEngineWebInfError03", "")); } /** * Couldn't get data OR file does exist. * If we have a path, then attempt to either open * the existing file, or create an (empty) file. */ if (config == null && realWebInfPath != null) { try { config = new FileProvider(realWebInfPath, configFile); } catch (ConfigurationException e) { log.error(Messages.getMessage("servletEngineWebInfError00"), e); } } /** * Fall back to config file packaged with AxisEngine */ if (config == null) { log.warn(Messages.getMessage("servletEngineWebInfWarn00")); try { InputStream is = ClassUtils.getResourceAsStream(AxisServer.class, SERVER_CONFIG_FILE); config = new FileProvider(is); } catch (Exception e) { log.error(Messages.getMessage("servletEngineWebInfError02"), e); } } return config; } }
下面就可以运行啦