`
wang19841229
  • 浏览: 96563 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

JSON-RPC-JAVA首次尝试的经历

    博客分类:
  • ajax
阅读更多

一直在JAVAEYE里混,一直没写过BLOG。最近看一个大哥说写BLOG,对人生有很多好处于是打算写一些。

今天在家闲来无事,决定要研究一下JSON-RPC-JAVA据说是和DWR有些类似,所以决定研究一下。于是上网下了一个例子,看了看觉得比较简单,于是做了试试。

下来的代码中有一个JSON-RPC的jar包,和他的源码都在一个eclipse工程里,我一个开始还纳闷为什么一个工程里又有jar又有源码。不过没上心,直接把jar包靠到我的工程里。没想到这是我的噩梦的开始。一开始代码如下

首先是把JSON-RPC的一个servlet配到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">
  <servlet>
		<servlet-name>JSONRPCServlet</servlet-name>
		<servlet-class>
			jcore.jsonrpc.servlet.JSONRPCServlet
		</servlet-class>
		<load-on-startup>2</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>JSONRPCServlet</servlet-name>
		<url-pattern>/JRPC</url-pattern>
	</servlet-mapping>
</web-app>

 2:写一个后台的JAVA类,这样前台可以调用。

package com.bean;

import java.io.Serializable;

import jcore.jsonrpc.common.JsonRpcObject;

public class SelectBo extends JsonRpcObject implements Serializable{
	private static final long serialVersionUID = 1L;
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public Integer selectName(String name)
	{
		Integer i = name.length();
		return i;
	}
}

 一定要继承JsonRpcObject类和实现序列化。

3:在页面注册

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
//调用json-rpc进行注册,第二个参数是以后JS中用的。
jcore.jsonrpc.common.JsonRpcRegister.registerObject(request, "myjsonrpc",com.bean.SelectBo.class);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>测试JSON-RPC for java</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
<script type="text/javascript" src="JsonRpcClient.js"></script>
<script type="text/javascript">
//引用一个JS脚本,用他的JsonRpcClient方法获取一个对象(变量名JSON),
对象调用刚才注册时候的变量名,这时生成的就是后台的JAVA对象了。
var json = JsonRpcClient("JRPC"), myjsonrpc = json.myjsonrpc;
function test()
{
	myjsonrpc.name = 'wangxiaowei';
	alert(myjsonrpc.name);
	var i = myjsonrpc.selectName(myjsonrpc.name);
}
</script>
  </head>
  <body>
	<input type="button" value="测试" onclick="test()"/>

  </body>
</html>

 要说这样可以了,可是怎么调试系统都报一个叫

2008-10-3 23:14:14 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet JSONRPCServlet threw exception
java.lang.StackOverflowError
	at java.util.regex.Pattern.range(Unknown Source)
	at java.util.regex.Pattern.clazz(Unknown Source)
	at java.util.regex.Pattern.sequence(Unknown Source)
	at java.util.regex.Pattern.expr(Unknown Source)
	at java.util.regex.Pattern.group0(Unknown Source)
	at java.util.regex.Pattern.sequence(Unknown Source)
	at java.util.regex.Pattern.expr(Unknown Source)
	at java.util.regex.Pattern.compile(Unknown Source)
	at java.util.regex.Pattern.<init>(Unknown Source)
	at java.util.regex.Pattern.compile(Unknown Source)
	at jcore.jsonrpc.common.ObjectToJSON.toJSON(ObjectToJSON.java:109)
	最后我试着把源码重新打包OK解决了我晕。再次说明时间是检验一切真理的唯一标准。
分享到:
评论
2 楼 jxpath 2009-05-19  
奇怪,你怎么不下他的
http://json-rpc-for-java.googlecode.com/files/jsonrpcsample.rar
呢?
我import工程就正确了啊

我看了他的文档,只需要用着两个文件啊:
JsonRpcClient.js
JSON-RPC.jar
(依赖包:commons-logging.jar、commons-logging-api.jar)

另外还有注意事项:
如果你的java服务对象返回的是Object、Bean、Map或者自定义对象,不能有属性_name_、_id_,这两个属性被本框架内部使用;
1 楼 jianyuesos 2008-10-05  
  还要用源码

相关推荐

    JSON-RPC-Java实例

    JSON-RPC-Java是一个用Java来实现动态JSON-RPC的框架. 利用它内置的一个轻级量JSON-RPC JavaScripIt客户端,可以让你透明地在JavaScript中调用Java代码。JSON-RPC-Java可运行在Servlet容器中如Tomcat也可以运行在...

    JSON-RPC for Java.src 2.0

    2. "JSON-RPC.jar":这是编译后的Java库文件,包含了JSON-RPC for Java的核心组件,可以直接在Java项目中引用以实现JSON-RPC通信。 3. "JsonRpcClient.js":这可能是JavaScript版本的客户端库,用于在浏览器端或Node...

    json-rpc-java-1.0.zip

    本压缩包“json-rpc-java-1.0.zip”包含了JSON-RPC在Java平台上的实现及相关使用示例。 首先,JSON-RPC的基本原理是,客户端通过HTTP请求将一个JSON格式的请求体发送到服务器,请求体包含了要调用的方法名和参数。...

    android-json-rpc

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程过程调用协议,常用于客户端-服务器通信。在Android开发中,有时我们需要与远程服务器进行数据交互,这时JSON-RPC客户端库就显得尤...

    json-rpc-for-java

    继《JavaScript高级应用与实践》之后推出的json-rpc-for-java开源代码,是仅仅100行的javascript代码和不到10个java文件实现的超级轻量级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持...

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

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程过程调用协议,常用于客户端-服务器通信,特别是在Web应用中。它利用JSON作为数据交换格式,因为JSON易于阅读、编写,并且对机器...

    json-rpc-java-1.0源代码

    本项目"json-rpc-java-1.0"提供了JSON-RPC的Java实现,包含`jsonArray`和`jsonObject`等关键组件。 1. JSON基础知识: JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它的基本...

    json-rpc.jar 和 jsonrpc.js

    JSON-RPC-Java是一个用Java来实现动态JSON-RPC的框架. 利用它内置的一个轻级量JSON-RPC JavaScripIt客户端,可以让你透明地在JavaScript中调用Java代码。JSON-RPC-Java可运行在Servlet容器中如Tomcat也可以运行在...

    JSON-RPC for Java使用说明

    JSON-RPC(JavaScript Object Notation Remote ...总之,JSON-RPC for Java提供了在Java环境中使用JSON进行远程调用的能力,通过学习和实践提供的文档和示例,你可以掌握如何在自己的项目中有效地应用JSON-RPC技术。

    JSON-RPC for Java使用说明.doc

    JSON-RPC for Java 使用说明 JSON-RPC(JavaScript Remote Procedure Call)是一种轻量级的远程过程调用(RPC)协议,允许在不同语言和平台之间进行数据交换。以下是 JSON-RPC for Java 使用说明的知识点总结: ...

    json-rpc-java-talk-20050225.pdf

    ### JSON-RPC-Java在构建下一代Web应用中的应用 #### 概述 在2005年的演讲中,Michael Clark探讨了如何利用JSON-RPC-Java来构建高度动态的Web应用程序。这一技术允许开发人员通过JavaScript透明地调用远程Java方法...

    Json-RPC for java Example

    json-rpc-for-java,是仅仅不到100行的javascript代码和不到10个java文件实现的超级轻量级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持级联调用,也就是说不需要额外 的JavaScript编程,...

    java开发常用jar包之json-rpc.rar

    本压缩包“java开发常用jar包之json-rpc.rar”包含了与JSON-RPC相关的Java库,便于开发者集成到他们的项目中。 一、JSON-RPC协议 1. JSON-RPC简介:JSON-RPC是一种基于JSON的RPC协议,它定义了如何通过HTTP或其他...

    json-rpc-1.0(with source).rar

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程过程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式。JSON-RPC 1.0是该协议的一个早期版本,它允许客户端和...

    JSON-RPC 2.0 规范(中文版)

    ### JSON-RPC 2.0 规范解析 #### 概述 JSON-RPC 2.0 是一种无状态、轻量级的远程过程调用(RPC)协议,旨在简化跨网络的应用通信流程。该规范定义了一系列数据结构及处理规则,以支持不同消息传输环境(如基于 ...

    Java框架JSON-RPC项目demo代码实战

    JSON-RPC(JavaScript ...通过这个实战项目,你可以深入理解JSON-RPC的工作机制,掌握Java中JSON-RPC框架的使用,并学习如何构建一个完整的JSON-RPC服务。同时,这也会帮助你提升在分布式系统中解决实际问题的能力。

    json-rpc-1.0.zip

    这个"json-rpc-1.0.zip"压缩包包含了一个Java实现的JSON-RPC 1.0版本的库,主要用于在Java应用程序中处理JSON数据并实现远程调用功能。 在Java中,JSON-RPC库允许开发者通过HTTP或WebSocket等协议,将JSON格式的...

    使用JSON-RPC

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式。在Web服务和分布式系统中,JSON-RPC提供了一种简单的方式...

    国人写的json-rpc-java的例子及jar包

    "rpc"代表远程过程调用,"java"则明确指出了编程语言,而"json-rpc-java"是这个库的核心主题,表示它是一个基于Java的JSON-RPC实现。 在提供的压缩包文件中,"JsonRpcForJava3.0.rar"可能是JSON-RPC Java库的一个...

    json-rpc-python

    JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程过程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式。在Python中,json-rpc-python库提供了一种方便的方式...

Global site tag (gtag.js) - Google Analytics