`
log_cd
  • 浏览: 1098833 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

SpringBoot开发WebService之Axis

阅读更多
一、服务器端发布WebService服务
1、POM.xml文件中引入相关依赖包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>net.logcd</groupId>
	<artifactId>springboot-axis</artifactId>
	<version>1.0.0</version>
	<packaging>war</packaging>

	<name>springboot-axis</name>
	<description></description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.8.RELEASE</version>
		<relativePath/>
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.7</java.version>
		<maven.test.skip>true</maven.test.skip>  
		<maven.test.failure.ignore>true</maven.test.failure.ignore>  
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<!-- 打war包时移除嵌入式tomcat插件 -->
			<!-- 
		    <exclusions>
		        <exclusion>
		            <groupId>org.springframework.boot</groupId>
		            <artifactId>spring-boot-starter-tomcat</artifactId>
		        </exclusion>
		    </exclusions>
		     -->
		</dependency>
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-web-services</artifactId>
		</dependency>

        <!-- axis 1.4 jar start -->
   		<dependency>
   			<groupId>org.apache.axis</groupId>
   			<artifactId>axis</artifactId>
   			<version>1.4</version>
   		</dependency>
   		<dependency>
   			<groupId>axis</groupId>
   			<artifactId>axis-jaxrpc</artifactId>
   			<version>1.4</version>
   		</dependency>
   		<dependency>
   			<groupId>commons-discovery</groupId>
   			<artifactId>commons-discovery</artifactId>
   			<version>0.2</version>
   		</dependency>
   		<dependency>
   			<groupId>wsdl4j</groupId>
   			<artifactId>wsdl4j</artifactId>
   			<version>1.6.3</version><!--$NO-MVN-MAN-VER$-->
   		</dependency>
        <!-- axis 1.4 jar end -->
		<dependency>
		    <groupId>javax.mail</groupId>
		    <artifactId>mail</artifactId>
		    <version>1.4.7</version>
		</dependency>
		<dependency>
		    <groupId>javax.activation</groupId>
		    <artifactId>activation</artifactId>
		    <version>1.1.1</version>
		</dependency>
		
		<dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>javax.servlet-api</artifactId>
		    <version>3.1.0</version><!--$NO-MVN-MAN-VER$-->
		    <scope>provided</scope>
		</dependency>		
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>  
					<skip>${maven.test.skip}</skip>  
					<testFailureIgnore>${maven.test.failure.ignore}</testFailureIgnore>  
				</configuration>				
			</plugin>
            <plugin>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-maven-plugin</artifactId>
	            <executions>
	                <execution>
	                    <goals>
	                        <goal>repackage</goal>
	                    </goals>
	                </execution>
	            </executions>
	        </plugin>
		</plugins>
	</build>

</project>

2、定义spring服务
@Service("helloService")
public class HelloService {

	public String sayHello(String username) {
		return "hello,"+username;
	}
	
}

3、配置并发布AxisServlet
@Configuration
public class WSAxisConfig {

	/**
	 * servlet过滤规则
	 * @return
	 */
	@Bean
	public ServletRegistrationBean dispatcherServlet() {
		ServletRegistrationBean axisServlet = new ServletRegistrationBean(new AxisServlet(), "/axis/*");
		axisServlet.setName("axisServlet");
		axisServlet.setLoadOnStartup(1);
		
		return axisServlet;
	}	
	
}

4、修改启动类,并重写初始化方法(打包war发布时需要改变启动方式)
@SpringBootApplication
@ServletComponentScan
public class Application {

	public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
	
}

public class SpringBootStartApplication extends SpringBootServletInitializer{

	@Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }	
	
}

5、logback日志配置
<?xml version="1.0"?>
<configuration>
  
    <!-- 日志目录 -->
    <property name="logdir" value="logs" />  
  
    <!-- 控制台 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">  
        <encoder charset="UTF-8">  
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%-5level] %logger - %msg%n</pattern>  
        </encoder>  
    </appender>  

	<appender name="netLogcdAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">  
	    <file>${logdir}/net_logcd.log</file>  
	    <append>true</append> 
	    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">  
            <fileNamePattern>${logdir}/net_logcd.%d{yyyy-MM-dd}.%i.log</fileNamePattern> 
            <MaxHistory>3</MaxHistory>
            <maxFileSize>20MB</maxFileSize> 
            <totalSizeCap>100MB</totalSizeCap>	        
	    </rollingPolicy>  
	    <encoder>  
	        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>  
	    </encoder>  
	</appender>
  
    <!-- 日志级别 TRACE, DEBUG, INFO, WARN, ERROR, ALL,OFF-->  
    <root>  
        <level value="info" />  
        <appender-ref ref="console" />  
    </root>  
 
	<logger name="net.logcd.ws" level="info" additivity="false">  
	    <appender-ref ref="netLogcdAppender" />  
	</logger>
  
</configuration>

二、客户端测试调用WebService
public class TestClientAxisWS {

	@Test
	public void invokeHelloService_WS() throws Exception {
		String endPointUrl = "http://127.0.0.1:8080/axis/helloService";
		String namespaceURI = "http://net.logcd.axis";
		Service service = new Service();
		Call call = (Call) service.createCall();

		call.addParameter("userName", XMLType.XSD_STRING, ParameterMode.IN);
		call.setReturnType(XMLType.XSD_STRING);

		URL url = new URL(endPointUrl);
		call.setTargetEndpointAddress(url);
		QName opName = new QName(namespaceURI, "sayHello");
		call.setOperationName(opName);
		Object retObj = call.invoke(new Object[] { "lucy" });

		System.out.println(retObj.toString());
	}

	/**
	 * 取天气预报信息(.net开发的WebService)
	 * @throws Exception
	 */
	@Test
	public void invokeWeatherService() throws Exception {
		String endPointUrl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";
		String namespaceURI = "http://WebXml.com.cn/";
		String soapActionURI = "http://WebXml.com.cn/getWeatherbyCityName";
		String method = "getWeatherbyCityName";

		Service service = new Service();
		Call call = (Call) service.createCall();

		call.addParameter(new QName(namespaceURI, "theCityName"), XMLType.XSD_STRING, ParameterMode.IN);
		call.setReturnType(XMLType.XSD_SCHEMA);

		call.setTargetEndpointAddress(new URL(endPointUrl));
		call.setUseSOAPAction(true);
		call.setSOAPActionURI(soapActionURI);
		call.setOperationName(new QName(namespaceURI, method));
		Schema result = (Schema) call.invoke(new Object[] { "成都" });

		StringBuffer buff = new StringBuffer();
		for (int i = 0; i < result.get_any().length; i++) {
			buff.append(result.get_any()[i]);
		}
		//把&#x591A替换成\u591A
		System.out.println(unicodeToString(buff.toString().replaceAll("&#x(.*?);","\\\\u$1")));
	}

	public static String unicodeToString(String str) {
		Charset set = Charset.forName("UTF-16");
		Pattern p = Pattern.compile("\\\\u([0-9a-fA-F]{4})");
		Matcher m = p.matcher(str);
		int start = 0;
		int start2 = 0;
		StringBuffer sb = new StringBuffer();
		while (m.find(start)) {
			start2 = m.start();
			if (start2 > start) {
				String seg = str.substring(start, start2);
				sb.append(seg);
			}
			String code = m.group(1);
			int i = Integer.valueOf(code, 16);
			byte[] bb = new byte[4];
			bb[0] = (byte) ((i >> 8) & 0xFF);
			bb[1] = (byte) (i & 0xFF);
			ByteBuffer b = ByteBuffer.wrap(bb);
			sb.append(String.valueOf(set.decode(b)).trim());
			start = m.end();
		}
		start2 = str.length();
		if (start2 > start) {
			String seg = str.substring(start, start2);
			sb.append(seg);
		}
		return sb.toString();
	}

}
分享到:
评论

相关推荐

    SpringBoot开发WebService之Axis示例

    SpringBoot以其便捷的启动和配置方式,已经成为Java开发中的首选框架之一。而 Axis 是一个流行的Apache项目,用于创建和部署Web服务,它提供了强大的SOAP处理能力。通过整合SpringBoot与Axis,我们可以快速构建高效...

    webservice之axis实例,axis复杂对象

    在"webservice之axis实例,axis复杂对象"这个主题中,我们将关注以下核心知识点: 1. **SOAP与WSDL**: SOAP是一种轻量级的消息协议,用于在Web上交换结构化的和类型化的信息。WSDL则是一种XML格式,用来描述Web...

    springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口

    在实际开发中,选择哪种方式取决于项目需求和个人偏好。 总结,本教程详细介绍了如何利用Spring Boot和Apache CXF搭建Web Service服务端,以及使用JAX-WS的`javax.xml.ws.Service`和Apache CXF的`...

    Spring集成axis2实现webservice所用到的包

    2. **创建WebService**:在Spring中,可以通过定义一个实现了特定接口的类来创建Web服务。这个接口通常对应于服务的WSDL契约,而实现类则包含了实际的服务逻辑。 Axis2提供了`ServiceStub`类,可以帮助我们与服务...

    springboot+axis1.4

    3. **创建WebService**:在Spring Boot应用中,你可以通过Axis1.4创建一个WebService。首先,定义一个Java类,包含你想要公开的方法。然后,使用Axis的工具生成服务端点接口和服务类。 4. **配置Spring Boot**:...

    发布webService服务接口与spring整合教程

    本教程将详细讲解如何将Web Service服务接口与Spring框架进行整合,以便在实际开发中实现高效、灵活的服务提供。 首先,让我们了解一下Web Service的基本概念。Web Service是一种软件系统,它通过使用开放标准(如...

    Springboot集成axis1.4的demo

    Spring Boot作为现代化的Java开发框架,极大地简化了Spring应用程序的创建和配置过程。当我们需要在Spring Boot项目中集成旧版的 Axis1.4 来发布Web服务时,这通常涉及到对传统SOAP(简单对象访问协议)服务的支持。...

    Axis2WebService与Spring的整合

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方式,而Axis2是Apache软件基金会开发的一个流行的Java Web服务框架。Spring框架则是Java企业级应用的事实标准,提供了强大的依赖注入、AOP(面向切面编程)等...

    java webservice之axis2与spring集成(二)

    以下是关于"java webservice之axis2与spring集成(二)"的详细知识点讲解: 1. **Spring框架**: Spring是Java领域的一个开源框架,主要用于简化企业级应用的开发。它提供了一个全面的编程和配置模型,特别强调了...

    springboot使用axis1.4的demo

    Spring Boot以其简化配置和快速开发能力而受到广泛欢迎,而Axis1.4是Apache软件基金会的一个开源项目,主要用于生成和消费SOAP Web服务。当我们需要在Spring Boot应用程序中集成Web服务时,Axis1.4提供了一个强大的...

    Springboot,axis1.4的demo

    2. **创建 Web 服务**:在 Axis1.4 中,你可以通过编写 Java 类并使用特定的注解(如 `@WebService`)来定义 Web 服务。这个类将包含你的业务逻辑,并可以通过 SOAP 调用来访问。 3. **配置 SpringBoot**:为了使 ...

    java期末大作业课程设计基于springboot+axis的医院挂号预约系统源码+数据库.zip

    客户端用springboot实现,服务端用webService+axis+mybatis实现 java期末大作业课程设计基于springboot的医院挂号预约系统源码+数据库。 软件架构说明 服务端:WebService+axis+mybatis 服务端开发环境:jdk8,...

    Axis2与Spring整合发布多个WebService

    通过以上步骤和最佳实践,开发者可以有效地利用Axis2和Spring框架整合发布多个WebService,同时借助Maven进行项目管理,提高开发效率和代码质量。这为构建复杂、可扩展的企业级Web服务解决方案提供了坚实的基础。

    java 调用https webservice实例及axis包

    本文将详细介绍如何使用Apache Axis库来实现这一功能,并提供相关步骤和注意事项。 首先,理解HTTPS(超文本传输安全协议)是HTTP的安全版本,它通过SSL/TLS协议对数据进行加密,以确保数据在传输过程中的隐私和...

    spring+axis集成webservice

    本文将深入探讨如何使用Spring与Axis进行集成,以便开发和消费Web服务。 首先,让我们了解Spring和Axis的基本概念。Spring是一个开源Java框架,它为构建灵活、模块化且可测试的应用程序提供了强大的支持。它包含多...

    Spring + axis2 开发 webservice

    当我们谈论“Spring + Axis2 开发 WebService”时,这通常指的是使用Spring框架与Apache Axis2工具来创建、部署和消费基于SOAP(Simple Object Access Protocol)的Web服务。以下是关于这个主题的详细知识点: 1. *...

    基于Axis编写webservice服务端和客户端时需要的jar包整理

    在开发Web服务时,Axis是一个常用的工具,尤其在基于Java的环境中。Axis1.4是其一个稳定版本,用于创建和使用Web服务。本篇文章将详细介绍基于Axis1.4编写Web服务服务端(Server)和客户端(Client)时所需的核心jar...

    Axis2集成Spring发布WebServices服务

    在当今的企业级应用开发中,集成多种技术框架以实现高效稳定的服务交互是常见需求之一。Axis2作为一款高性能的开源Web服务栈,提供了丰富的功能来支持SOAP、REST等多种通信协议。而Spring框架则以其强大的依赖注入和...

    SpringBoot使用CXF集成WebService的方法

    #### 2.2 开发Webservice接口 接下来,你需要定义一个Webservice接口。使用`@WebService`注解来标识接口,并设置`serviceName`和服务命名空间。例如: ```java @WebService(serviceName = "gzcxfw_wx_...

    demo-service.zip

    在本文中,我们将深入探讨如何使用Spring Boot框架与Apache Axis2进行集成,以开发Web服务端应用程序。Spring Boot以其简洁的配置和开箱即用的功能,已成为Java领域中开发微服务的首选框架。而Axis2作为流行的Web...

Global site tag (gtag.js) - Google Analytics