`
log_cd
  • 浏览: 1098620 次
  • 性别: 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:'女'}) 

相关推荐

    jsonrpc-frontend:前端应用程序发送 json-rpc 请求进行测试

    压缩包内的"说明.txt"可能是项目文档的一部分,详细解释了如何使用jsonrpc-frontend库,包括安装步骤、API接口、示例代码等。而"jsonrpc-frontend-master"则可能是一个Git仓库的克隆,包含了源代码、示例、测试用例...

    scrapy-jsonrpc, Scrapy对使用 JSON RPC控制spider的扩展.zip

    scrapy-jsonrpc, Scrapy对使用 JSON RPC控制spider的扩展 爬虫 jsonrpcScrapy jsonrpc是一个扩展,通过 json rpc控制一个正在运行的爬虫网络爬虫。 服务通过协议提供对Crawler对象的访问。安装使用 pip 安装 scrapy-...

    JSONRPC+JSON+Java

    JSONRPC(JSON Remote Procedure Call)是一种轻量级的远程过程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式。JSON因为其简洁、易于理解和解析的特性,广泛应用于网络通信和数据交换。JSON...

    jsonrpc4j整合Spring+Maven轻量级远程调用

    使用这个客户端,你可以像调用本地方法一样调用远程服务,JSONRPC4J会自动处理请求的构建和响应的解析。 7. **错误处理和异常转换** JSONRPC4J支持错误码和错误消息的传递,当服务端抛出异常时,客户端可以通过...

    jsonrpc-c-master 基于 json rpc 1.0 纯C开发的服务端代码和示例

    使用"jsonrpc-c-master"进行开发通常包括以下几个步骤: 1. **理解库API**: 阅读库的头文件和文档,了解如何初始化服务器、注册处理函数、接收和发送JSON-RPC消息。 2. **实现业务逻辑**: 编写处理特定RPC方法的函数...

    jsonrpc4j-0.27(包含jar,sources,javadoc)

    总的来说,JSONRPC4J是一个强大且易于使用的工具,可以帮助Java开发者轻松地实现在不同系统间进行JSON-RPC通信。通过这个压缩包提供的jar、源码和API文档,开发者可以迅速集成和利用JSONRPC4J,提升项目的跨系统通信...

    Laravel开发-laravel-jsonrpc

    1. **安装依赖**:首先,你需要安装 Laravel JSON-RPC 的服务提供者,如 `swooletw/laravel-jsonrpc`。通过 Composer 安装: ``` composer require swooletw/laravel-jsonrpc ``` 2. **配置服务提供者**:在 `...

    JsonRPC, 简单的Json RPC PHP客户机/服务器只.zip

    JsonRPC, 简单的Json RPC PHP客户机/服务器只 JsonRPC PHP客户端和服务器一个简单的json rpc客户机/服务器。 特性仅限 json rpc 2.0服务器支持批处理请求和通知基于身份验证和IP的客户端限制自定义中间件完全单元...

    go-jsonrpc-websocket.rar

    在本文中,我们将深入探讨如何使用Go语言和jsonrpc库来构建一个基于Websocket的客户端,以便与服务端进行交互并处理接收到的通知消息。首先,让我们了解这些关键概念: 1. **Go语言(Golang)**:由Google开发的...

    jsonrpc4j+springboot+maven实例

    &lt;artifactId&gt;jsonrpc4j &lt;version&gt;1.5.0 &lt;groupId&gt;javax.portlet &lt;artifactId&gt;portlet-api &lt;version&gt;2.0 Service代码: @JsonRpcService("/member") public interface MemberService { ... } 因为是基于...

    jsonrpc-1.0.jar

    使用`jsonrpc-1.0.jar`,开发者可以创建一个JSON-RPC服务器,暴露一组可调用的方法供客户端访问。同时,客户端可以使用此库构造JSON-RPC请求并解析服务器的响应。这个库简化了处理JSON-RPC交互的过程,避免了手动...

    ajax jsonrpc包的使用

    之后,引入 `jsonrpc.js`,这样 JavaScript 就能使用 JSON-RPC 功能了。 4. **准备服务器端 JavaBean**:编写你需要暴露给客户端调用的 JavaBean 或服务类。这些类的方法将成为 JavaScript 中可以调用的远程方法。 ...

    json rpc源代码及Jar包(含2.4.5、2.5.0、2.5.1).rar

    使用这些库,开发者可以轻松地将Java对象转换成JSON格式,通过JSON RPC协议发送到远程服务,并接收返回的数据。此外,Jackson库的强大之处在于它的灵活性和可配置性,允许定制序列化和反序列化行为,适应各种复杂的...

    JsonRpc.rar_C++ jsonrpc_JSON_JsonRpc.rar_json-rpc _用jsonrpc封装

    你提供的"JsonRpc.rar"包含了C++实现的JSON-RPC封装,下面我们将深入探讨这个主题。 1. **JSON-RPC基本概念**: JSON-RPC允许客户端通过发送JSON格式的数据到服务器,请求执行特定的方法,并可能接收到响应结果。...

    JSONRPC

    2. **方法调用**:JSONRPC使用函数调用语义,而RESTful基于HTTP方法(GET、POST等),前者更直观,后者更符合Web原则。 3. **错误处理**:JSONRPC内置错误处理机制,RESTful需要自定义错误响应。 4. **版本控制**:...

    Jsonrpc4j+Spring自动扫描配置

    当我们将Jsonrpc4j与Spring结合使用时,我们可以利用Spring的自动化配置能力来简化Jsonrpc4j的集成过程,从而更高效地构建分布式系统。 首先,让我们深入理解Jsonrpc4j的核心概念。JSON-RPC是一种轻量级的远程调用...

    jsonrpc所需jar包

    jsonrpc所需要的jar包,包括jackson-annotations-2.3.0.jar,jackson-core-2.5.4.jar,jackson-databind-2.6.2.jar,jsonrpc4j-1.0.jar

    jsonrpc测试工具testjsonrpc

    Test-Jsonrpc是一个专门用于测试JSON-RPC接口的工具,主要针对JavaScript开发者,它可以帮助开发者验证JSON-RPC服务的正确性,确保服务端提供的方法能够正确响应客户端的请求。 在JavaScript开发中,测试是保证代码...

Global site tag (gtag.js) - Google Analytics