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

使用jsonrpc

阅读更多
   JSON:JavaScript Object Notation,JavaScript对象的一种字面量描述格式,是一种轻量级的数据交换格式。
    RPC:Remote procedure call,远程过程(函数、方法)调用。
   jsonrpc 依赖 jsonrpc-1.0.jar 文件,以及一个 js文件(jsonrpc.js)
(1)web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:applicationContext.xml
		</param-value>
	</context-param>

	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>

	<listener>
		<listener-class>
		<!--注册配置的Bean对象-->
	org.jsonrpc.service.RegistServiceToJsonrpcBridgeListener
		</listener-class>
	</listener>
	    
	<servlet>
        <servlet-name>JSONRPCServlet</servlet-name>
        <servlet-class>
            com.metaparadigm.jsonrpc.JSONRPCServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>JSONRPCServlet</servlet-name>
        <url-pattern>/JSON-RPC</url-pattern>
    </servlet-mapping>

	<session-config>
		<session-timeout>120</session-timeout>
	</session-config>

	<welcome-file-list>
	  <welcome-file> index.html </welcome-file>
	</welcome-file-list>

</web-app>

(2)jsonrpc.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:aop="http://www.springframework.org/schema/aop"   
    xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd    
  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd ">   
   
    <bean name="jsonrpcServiceConfigurer"   
        class="org.jsonrpc.service.spring.JsonrpcServiceConfigurer">   
        <property name="services">   
            <map>   
                <entry key="helloWorld">   
                    <ref bean="helloWorld" />   
                </entry>   
            </map>   
        </property>   
    </bean>   
</beans>

(3)applicationContext.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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.0.xsd ">
    
    <import resource="jsonrpc.xml"/>
    
    <bean id="helloWorld"   
        class="com.logcd.service.impl.HelloWorldImpl">   
    </bean>
</beans>

(4)HelloWorld.java和HelloWorldImpl.java
public interface HelloWorld {
	public String sayHelloWorld(String name);
}

public class HelloWorldImpl implements HelloWorld{

	public String sayHelloWorld(String name) {
		return "Hello World! hello, " + name;
	}
}

(5)调用
<script type="text/javascript" src="script/jsonrpc.js"></script><script>
	var jsonrpc = null;
	//初始化JSONRpcClient对象
	jsonrpc = new JSONRpcClient("JSON-RPC");
	function jsonrpcHello(){
	    var name = "阿花!";  
	    var result = jsonrpc.helloWorld.sayHelloWorld(resultCallback,name); 
	}  
	function resultCallback(result, e){
		alert("The server replied: " + result);
	} 
</script>
分享到:
评论
6 楼 lijunwyf 2015-06-17  
http://code.google.com/p/json-rpc-for-java/  这个上不了啊,悲催的红朝
5 楼 wenlongsust 2014-05-19  
jxpath 写道
中国人真的很悲哀,总是小看身边的人,而觉得其他远处的人更厉害,其他公司的人更好,总觉得中国的就没有老外的好;
而事实上:国人的json-rpc-for-java比老外的更好用

国人的:http://code.google.com/p/json-rpc-for-java/
老外的:http://oss.metaparadigm.com/jsonrpc/进行对比而言----

对比理由如下:

1、都需要在web.xml注册(代码量差不多)

2、老外的每个java服务对象都需要做繁琐的注册,而国人的json-rpc-for-java 服务对象都不需要再进行注册就可以直接在js中使用

3、老外的json-rpc返回的java对象,不能在js中调用返回的java对象的方法,也就是级联调用;
   国人的json-rpc-for-java则支持无限制的级联调用,而无需任何注册或特殊处理的地方
  
4、调用上
    老外的:var list = {"javaClass":"java.util.ArrayList", "list":[1, 2, 3]};
            jsonrpc.hello.sayList(cbList, list);
    国人的:rpc.getRpcObj('test.rpc.MyTestRpc').getTestMsg(),或者rpc.MyTestRpc.getTestMsg() 
            国人的直接支持Map和JavaBean作为入口参数传入 rpc.MyTestRpc.getTestMsg({id:33, name:"test", sex:'女'}) 

json-rpc-for-java使用起来的确挺简单的,JsonRpcObject的子类中如何使用Spring管理的Bean呢?
4 楼 zx890723 2013-12-23  
一楼威武,分析的太犀利了
3 楼 fhqltzhaoli 2013-08-07  
aaaaaaaaa
2 楼 log_cd 2009-11-30  
,的确呵,我也不喜欢它的服务对象注册!要学习才有对比三
1 楼 jxpath 2009-11-27  
中国人真的很悲哀,总是小看身边的人,而觉得其他远处的人更厉害,其他公司的人更好,总觉得中国的就没有老外的好;
而事实上:国人的json-rpc-for-java比老外的更好用

国人的:http://code.google.com/p/json-rpc-for-java/
老外的:http://oss.metaparadigm.com/jsonrpc/进行对比而言----

对比理由如下:

1、都需要在web.xml注册(代码量差不多)

2、老外的每个java服务对象都需要做繁琐的注册,而国人的json-rpc-for-java 服务对象都不需要再进行注册就可以直接在js中使用

3、老外的json-rpc返回的java对象,不能在js中调用返回的java对象的方法,也就是级联调用;
   国人的json-rpc-for-java则支持无限制的级联调用,而无需任何注册或特殊处理的地方
  
4、调用上
    老外的:var list = {"javaClass":"java.util.ArrayList", "list":[1, 2, 3]};
            jsonrpc.hello.sayList(cbList, list);
    国人的:rpc.getRpcObj('test.rpc.MyTestRpc').getTestMsg(),或者rpc.MyTestRpc.getTestMsg() 
            国人的直接支持Map和JavaBean作为入口参数传入 rpc.MyTestRpc.getTestMsg({id:33, name:"test", sex:'女'}) 

相关推荐

Global site tag (gtag.js) - Google Analytics