问题标签 [hessian]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
511 浏览

java - Java 客户端和服务器应用程序:序列化还是 REST / SOAP / RPC?

我正在用 Java 编写应用程序。它有两部分,服务器和客户端。我需要在服务器和客户端之间进行通信(使用 SSL 安全)。我没有任何其他非 Java 应用程序连接到服务器(在很长一段时间内也没有),所以我不依赖其他人的 API。

大多数数据将是字符串、数字和其他“常见”数据类型。

使用 Java 序列化在服务器和客户端之间进行通信是个好主意吗?或者“好方法”是使用 SOAP / XML / RPC / REST / ...?

我发现“Hessian 二进制 Web 服务协议”是好还是浪费时间?

谢谢你的帮助。这是我的第一个更大的客户端-服务器应用程序。

0 投票
0 回答
1017 浏览

spring - 如何使用带有 hessian 和 spring security 的 spring 远程处理?

我们有一个三层架构,我们正在结合使用 spring 远程处理和 hessian。目前我们有一个客户端应用程序,业务应用程序在两个不同的 tomcat 上运行。

但是我们遇到了一个安全问题。我们公开的服务(业务应用程序)需要具有特殊权限的登录用户,例如 ROLE_SUPERVISOR。客户端应用程序有一个登录表单,凭据验证由业务应用程序完成(客户端应用程序没有数据库连接)。这意味着用户只登录客户端应用程序,业务应用程序对此一无所知(这可能是主要问题)。

我们认为使用 spring security 远程处理将所有需要的信息从客户端发送到业务应用程序(即身份验证对象)是可能的。但不幸的是,这是无法做到的。所以,我们必须找到另一种解决方案。

  • 一种解决方案可能是将身份验证对象与每个请求一起发送。但这可能还有另一个安全问题。客户端发送的身份验证对象可以被攻击者伪造。在这种情况下,我们必须检查每个请求的用户凭据并加载他的角色(授予权限)以确保他被授权。

  • 第二种解决方案是两个应用程序都知道登录的用户,这意味着,当用户使用客户端应用程序登录时,他也登录了业务应用程序。但是,无论如何,用户(或授权)对象必须随每个请求一起发送。

也许我们错过了一些东西。使用弹簧安全和弹簧远程处理是否有更好/更简单的方法来做到这一点。三层架构并不罕见,必须有一种方法来保护暴露的服务。

使用 hessian更新 spring 远程处理:客户端配置(java config)

业务方面:

我感谢您的帮助!谢谢,丹尼尔

0 投票
2 回答
2640 浏览

java - Objective-C 如何通过 Hessian 支持 Java BigDecimal?

服务器有一个 Java Bean,它有一个实例变量类型BigDecimal,但 Objective-C 不能映射它!我试过了NSNumber,但没有用。有人知道如何解决吗?

0 投票
0 回答
81 浏览

c# - Hessian ReadMap 错误

我正在维护一个使用 Hessian 的 silverlight 应用程序。

我注意到,当我们返回大量数据时,反序列化代码会在方法中引发错误:

期望:

我最初认为这是由于返回的数据的大小,因为当我们减少数据时,错误没有出现。

被反序列化的对象结构格式如下:

我不确定错误来自哪里?

0 投票
1 回答
394 浏览

grails - Grails Hessian 问题

我们正在将生产环境转移到客户的数据中心。目前,为了解释这个场景,我们有一个 Apache 负载均衡器,它对托管 2 个 Grails 应用程序的 2 个 Apache Tomcat 应用程序服务器的请求进行负载均衡。我会很感激任何帮助!

总而言之,我们的设置是: - 充当负载均衡器的 Apache HTTP 服务器

  • 2 台 Tomcat 服务器(节点 A 和节点 B)

  • 我们在每个 Tomcat 服务器上托管了两个 Java/Grails 应用程序。在我们当前的环境中,我们通过负载均衡器将 hessian 请求从我们的一个 grails 应用程序发送到另一个 grails 应用程序。这完美地工作。在我们要迁移到的环境中,这是失败的。

    我们已经能够验证所有防火墙和安全包都已关闭。我们还能够验证每次该 hessian 调用失败时负载均衡器访问日志中是否存在错误 (/var/log/httpd/access_log):

10.30.95.51 - - [19/Jun/2014:11:55:13 -0400]“POST /Application/hessian/RemoteTicketService HTTP/1.1”500 8067“-”“Java/1.6.0_30”

我继续执行 tcpdump,我能够确定 Hessian 存在 Grails 应用程序错误 - 有人有什么想法吗?:

L6DàL6<83>¢HTTP/1.1 500 内部服务器错误^M 日期:2014 年 6 月 20 日星期五 14:40:08 GMT^M 服务器:Apache/2.2.15 (Red Hat)^M 连接:close^M 传输编码: chunked^M Content-Type: text/html;charset=UTF-8^M ^M 1f83^M Grails Runtime Exception .message {border: 1px solid black; 填充:10px;背景颜色:#E9E9E9; 边距:30px;} .header{ 边距:30px; } .stack { 边框:1px 纯黑色;填充:5px;溢出:自动;高度:300px;} .snippet { 填充:5px; 背景颜色:白色;边框:1px纯黑色;边距:3px;字体家族:信使;}

看起来您遇到了错误,对此 消息感到抱歉:在 -1 的粗麻布输入中预期 'H'/'C' (Hessian 2.0) 或 'c' (Hessian 1.0)
原因:Hessian 骨架调用失败;嵌套异常是 java.io.IOException: Expected 'H'/'C' (Hessian 2.0) or 'c' (Hessian 1.0) in hessian input at -1 Class: Unknown
At Line: [-1]
Code Snippet:

0 投票
0 回答
214 浏览

java - Hessian 二进制 web 服务协议-C 语言

我想为 J2EE 服务器使用 Hessian 二进制 Web 协议(http://hessian.caucho.com/),我需要使用 C 代码(低级硬件设备,不能处理 C++ 程序)与服务器通信。

我知道 C 不是面向对象的语言,但是否有任何(有限的)库可用,可以调用一些简单的方法,例如:

0 投票
1 回答
636 浏览

java - 使用 Hessian(3.1.3) 时哪个春季版本是正确的?

现在我用spring(3.2.3.RELAESE)+Hession(3.1.3)启动了一个hession服务器,然后我运行一个客户端调用服务器,它总是打印错误如下:

我知道它不适合(弹簧+hession)兼容..

我应该选择哪个春季版本?

0 投票
1 回答
256 浏览

java - hessian,服务器接口升级时的兼容性

我们正在使用 hessian 进行 java 客户端服务器远程处理。现在我们需要更改一个界面来添加一个新字段。

除了添加一个新界面,还有其他方法吗?

界面看起来像

我们只想更改添加新字段的界面并添加一些逻辑来处理向后兼容性,例如

0 投票
0 回答
1731 浏览

java - HessianFieldException 错误

我通过远程和客户端应用程序在我的项目中使用 Hessian。我在脱盐方面遇到了一些问题。我的粗麻布应用程序返回包含其他对象集的对象,但在客户端我遇到异常。

嵌套异常是 com.caucho.hessian.io.HessianFieldException: java.util.Set 不能从 null 赋值

我还检查了 set null 并且检查的对象没有设置 null。

请告诉我我缺少什么以及这个问题的根本原因。

0 投票
0 回答
88 浏览

java - 使用 hessdroid = new AsyncTask 为每个方法调用网络应用程序方法?

在我的 Android 应用程序中,我想调用一些网络应用程序方法。我为此使用 hessian (hessdroid library for Android)。

这就是它的工作原理:在我的 Android 应用程序中,我有所有服务器方法的接口,例如 getUserById()、getMessageById()、getSomethingElse() 等。

使用 Hessian,我可以通过 http 调用这些方法。

所以我需要为此初始化 Hessian Proxy:

之后,我可以运行这样的服务器方法:

问题是api调用像“api.someMethod();” 需要从单独的线程运行。在任何其他情况下,我都有 NetworkOnMainThread 异常。

我的问题是如何以正确的方式拨打这些电话?我应该为每个服务器方法调用创建 AsyncTask 吗?或者有可能使它更通用?我真的不认为为每种方法创建 AsyncTask 是正确的方法。它使代码变脏。

有任何想法吗?我非常感谢您提供的任何解决方案。