ITestService
package com.yydone.service; public interface ITestService { public String say(); public String doSomething(); }
TestService
package com.yydone.service.impl; import org.springframework.stereotype.Service; import com.yydone.service.ITestService; @Service public class TestService implements ITestService { public String say() { return "hello yydone"; } public String doSomething() { return "working"; } }
spring-hik.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <context:component-scan base-package="com.yydone.service" /> <bean name="testServiceHik" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> <property name="service" ref="testService"/> <property name="serviceInterface" value="com.yydone.service.ITestService"/> </bean> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/testServiceHik" value-ref="testServiceHik" /> </map> </property> </bean> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>yydone-test</display-name> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-hik.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/hik/*</url-pattern> </servlet-mapping> </web-app>
pom.xml
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.yydone</groupId> <artifactId>hessian-test</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>3.2.2.RELEASE</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> <build> <finalName>yydone-test</finalName> </build> </project>
log4j.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"> <!-- 业务日志,生产环境使用。 --> <appender name="log_file" class="org.apache.log4j.DailyRollingFileAppender"> <param name="Threshold" value="DEBUG" /> <param name="File" value="/log/hessian-test.log" /> <param name="Append" value="true" /> <param name="DatePattern" value="'.'yyyy-MM-dd-HH" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %-40.40c -%m%n" /> </layout> </appender> <!-- 控制台日志,开发阶段使用 --> <appender name="log_console" class="org.apache.log4j.ConsoleAppender"> <param name="Threshold" value="INFO" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %-40.40c -%m%n" /> </layout> </appender> <!-- 默认业务日志 --> <root> <appender-ref ref="log_file" /> <appender-ref ref="log_console" /> </root> </log4j:configuration>
下面是测试例子
spring-hik-test.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <bean id="myServiceClient" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceUrl" value="http://localhost:10080/yydone-test/hik/testServiceHik" /> <property name="serviceInterface" value="com.yydone.service.ITestService" /> </bean> </beans>
TestServiceTest.java
package test; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.yydone.service.ITestService; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:spring-hik-test.xml") public class TestServiceTest extends AbstractJUnit4SpringContextTests { @Autowired private ITestService testService; @Test public void test_say() { System.out.println(testService.say()); System.out.println(testService.doSomething()); } }
输出
hello yydone working
相关推荐
HttpInvoker是Spring框架的一部分,它提供了一种基于HTTP协议的远程调用机制,使得不同网络环境中的Java应用之间能够进行安全、高效的通信。本篇文章将深入探讨Spring HttpInvoker的原理以及如何对其进行封装,以便...
因此,选择HttpInvoker还是Hessian,取决于具体的应用场景和性能需求。 总的来说,Spring的HttpInvoker提供了一种灵活的远程服务调用方式,它允许开发者利用HTTP协议的广泛支持,同时保持与本地方法调用相似的API...
<bean id="serviceExporter" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> ``` 这里,`ServiceImpl`是你实现`ServiceInterface`的具体类,`HttpInvokerServiceExporter`将...
同时,使用`@HttpInvokerService`注解暴露该服务,指定远程访问的URL。 3. 配置服务消费方:在服务消费方,使用`@HttpInvokerProxyFactoryBean`来创建服务代理,指定服务的URL和接口类型。这样,消费方就可以像调用...
Java Spring 2.5 Remote Invoke HTTP Invoker 是一个基于HTTP协议的远程调用框架,它允许Spring应用通过HTTP协议来调用远程服务。这个技术在分布式系统中非常有用,因为它可以轻松地跨越网络边界,实现服务间的通信...
Java Spring 1.2 远程调用HTTP Invoker是一个基于HTTP协议的远程服务调用框架,它是Spring框架的一部分,允许应用通过HTTP协议进行服务间的通信。这种通信方式相对于RMI(Remote Method Invocation)等其他远程调用...
HttpInvoker主要面向Spring应用程序,易于集成,但相比Hessian,其数据传输效率较低,因为HTTP协议本身较重,且Java序列化也相对消耗资源。 XFire(后来被Apache CXF吸收)是一款基于XML的Web服务框架,它支持多种...
`Http Invoker`是Spring框架提供的一种基于HTTP协议的RPC实现,主要用于Java应用程序之间进行服务调用。本文将深入探讨如何使用Http Invoker实现RCP客户端与后台的交互,以及相关知识点。 1. **Http Invoker的基本...
<bean id="myServiceExporter" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> ``` 服务端还需要一个Servlet容器,如Tomcat,部署Spring应用上下文,并配置一个...
HttpInvoker是Spring框架的一个组件,主要用于实现基于HTTP协议的远程服务调用。它允许Java对象像本地调用一样调用远程的服务方法,降低了分布式系统间的通信复杂性。HttpInvoker通过序列化对象和方法调用参数,将其...
在实际应用中,HttpInvoker的优势在于其简单性和易用性。由于基于HTTP协议,所以它可以轻松穿透防火墙,且与平台无关,支持多种编程语言。同时,由于它是基于Spring的,可以很好地与其他Spring功能集成,如事务管理...
Spring框架的集成也使得Http Invoker在Spring应用中无缝工作,提供了事务管理、AOP切面等功能。但是,由于使用的是HTTP和文本序列化,它的性能可能不如Thrift。 从Thrift转换到Spring Http Invoker,开发者需要考虑...
总之,通过这个简单的Spring远程调用实例,我们可以深入了解Spring如何简化分布式系统开发,以及HTTP Invoker的工作机制。在实际应用中,Spring远程调用可以作为一个强大的工具,帮助我们构建可扩展、灵活的服务架构...
Spring HTTP Invoker是一种灵活且高效的远程调用机制,适用于那些希望利用HTTP进行远程服务调用的应用场景。通过简单的配置步骤,开发者可以轻松地在客户端和服务端之间建立通信,并通过序列化机制安全地传输数据。...
Spring框架支持多种远程访问技术,包括RMI(Remote Method Invocation)、JAX-RPC(Java API for XML-based Remote Procedure Call)、Hessian、Burlap、XFire以及Spring自带的HTTPInvoker。这些技术都有各自的使用...
- **远程调用**:Spring支持多种远程调用协议,如RMI、HTTP Invoker等,方便不同应用之间的交互。 - **脚本支持**:Spring支持脚本语言(如Groovy),可以通过脚本来扩展应用程序的功能。 - **测试**:Spring提供了...
- **功能简介**:包含了支持 EJB、JMS、远程调用 Remoting(RMI、Hessian、Burlap、Http Invoker、JAX-RPC)方面的类。 - **应用场景**:适用于需要实现远程调用功能的项目。 - **依赖关系**:依赖于 `spring-core....
9. **spring-remoting.jar**:提供了对远程调用的支持,包括RMI、HTTP Invoker等技术。 10. **spring-support.jar**:提供了一些额外的支持,例如缓存支持、邮件发送等。 11. **spring-web.jar**:为基于Web的应用...
<bean id="httpInvokerServiceExporter" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> ``` 3. **配置Servlet容器**: 配置Servlet容器(如Tomcat),将`...