SpringHttpInvoker解析1-使用示例


HTTP invoker是一個新的遠程調用模型,作為Spring框架的一部分,來執行基於HTTP的遠程調用(讓防火牆可以接受),並使用Java的序列化機制。

服務端

定義服務接口UserService

import java.util.List;  
import com.gosun.jws.daomain.Users;  
public interface UserService {  
    public List<Users> geAlltUsers();  
    public Users getUser(String id);   
    public void save(Users user);   
    public void saves(List<Users> users);   
}  

服務接口實現類

import java.util.List;  
import com.gosun.jws.daomain.Users;  
import com.gosun.jws.daomain.UsersFactory;   
public class UserServiceImpl implements UserService {  
    @Override  
    public List<Users> geAlltUsers() {  
        return UsersFactory.getUsers();  
    }  
    @Override  
    public Users getUser(String id) {  
        System.out.println(id);  
        return UsersFactory.getUser();  
    }  
    @Override  
    public void save(Users user) {  
        System.out.println(user.toJson());  
    }  
    @Override  
    public void saves(List<Users> users) {  
        for (Users u : users) {  
            System.out.println(u.toJson());  
        }  
    }  
}  

配置Spring的HttpInvokerServiceExporter和SimpleUrlHandlerMapping

<!-- 在Spring的httpInvoker服務 -->  
<bean id="httpInvokerUserService"  
    class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">  
    <!--需要發布的實現類 -->  
    <property name="service" ref="userServiceHttpInvoker" />  
    <property name="serviceInterface" value="com.gosun.jws.httpinvoker.UserService" />  
</bean>  
<!-- 將特定的請求映射到具體的hessianservice -->  
<bean id="urlMapping1"  
    class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
    <property name="mappings">  
        <props>  
            <prop key="/httpInvokerUserService.service">httpInvokerUserService</prop>  
        </props>  
    </property>  
</bean>  
<bean id="userServiceHttpInvoker" class="com.gosun.jws.httpinvoker.UserServiceImpl" />  

配置DispatcherServlet控制器

<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:applicationContext-httpinvoker.xml</param-value>  
  </init-param>  
</servlet>  
<servlet-mapping>  
  <servlet-name>dispatcherServlet</servlet-name>  
  <url-pattern>*.service</url-pattern>  
</servlet-mapping>  

客戶端

配置Spring的HttpInvokerProxyFactoryBean

<bean id="httpInvokerUserService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">  
  <property name="serviceUrl" value="http://localhost:8080/jws/httpInvokerUserService.service"/>  
  <property name="serviceInterface" value="com.gosun.jws.httpinvoker.UserService" />  
</bean> 

測試代碼

import java.util.List;  
import org.springframework.context.ApplicationContext;  
import org.springframework.context.support.ClassPathXmlApplicationContext;  
import com.gosun.jws.daomain.Users;  
  
public class ClientDemo {  
    public static void main(String[] args) {  
        ApplicationContext ac = new ClassPathXmlApplicationContext("client-application/applicationContext-httpInvoker.xml");  
        UserService us = (UserService) ac.getBean("httpInvokerUserService");  
        Users user = us.getUser("a001");  
        System.out.println(user.toJson());  
        System.out.println("----------------------------------------");  
        List<Users> users = us.geAlltUsers();  
        for (Users u : users) {  
            System.out.println(u.toJson());  
        }  
        System.out.println("----------------------------------------");  
        us.save(user);  
        System.out.println("----------------------------------------");  
        us.saves(users);  
    }  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM