问题标签 [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 回答
737 浏览

tomcat7 - Apache Cayenne ROP 服务器“没有与请求关联的会话。” 在 Tomcat 7 上

我开发了一个带有 java 富客户端和远程对象持久性服务器的 cayenne 项目。如果我有钱的 cient 连接到部署在本地主机上同一台机器上的 Cayenne-ROP-Server(在 Jetty 上来自 maven 目标,如在 cayenne rop 教程中解释的那样),一切都很好:

如果我将第一行中要连接的 url 更改为非本地主机(ubuntu 上的 Tomcat7),那么一切正常,直到第 4 行:

然后我收到错误“没有与请求关联的会话”

这是客户端的完整输出:

这是 Apache Tomcat 日志的服务器端输出:

我使用 Apache Cayenne 3.0.2、Apache-Tomcat 7.0.29 和 Java 7 sdk

每个帮助都提前 THX

PS。也许本地 Jetty 服务器以另一种方式处理事情,就像远程 unix 机器上的 Tomcat 服务器一样。

编辑:在 Andrus 在下面的答案中给出提示之后,我添加了一个看起来像这样的 SessionListern:

因此,在执行此问题之上的 4 行代码状态时,此侦听器为我提供了以下输出:

在这里你可以看到有一个会话被创建并且没有会话被杀死。那么为什么我的代码行中的 ObjectContext

确实忽略了会话。在进行查询之前我是否必须明确设置它?客户端访问远程部署的 cayenne 服务器的标准初始化代码是什么。它与 cayenne rop 教程中给出的不同吗?

提前谢谢。

编辑:我升级到 cayenne 3.1B1 希望摆脱这个错误,但同样的情况:“没有会话......”尝试发送查询时。

我还在 localhost 上设置了一个 tomcat 并将其配置为与远程相同。尝试发送查询时出现相同的问题“无会话...”。

因此,localhost 上的 Jetty 是唯一一个从上面获取 4 行初始化代码并为每个后续查询保存会话的码头。所以这是我的问题。这个星球上是否有人曾尝试在 tomcat 上部署 cayenne rop 服务器并成功了?

对于每一个小提示,请提前 THX。

编辑:所以我在本地 tomcat7 上做了一点服务器端调试。

1.Client从上面执行第2行代码:

在服务器端,我的会话侦听器被触发并告诉我一个会话已创建,ID 为:B6565298F222294F601B76333DBE4911

2.Client从上面执行第3行:

在服务器端,类 org.apache.cayenne.remote.service.HttpRemoteSession 的方法被调用:

此方法的第一行创建了一个新会话。其 ID 为:ECC4A81D6240A1D04DA0A646200C4CE6。这个新会话只包含一个属性:键是“org.apache.cayenne.remote.service.HttpRemoteService.ServerSession”,值是(谁猜到了?)之前在步骤 1 中创建的会话让我感到奇怪的是,我的尽管创建了新会话,但不会触发 serveltListener。

3.Client从上面执行第4行

现在在服务器端再次调用 getServerSession() 方法。这次还创建了一个新会话(为什么?)。并且此会话不包含任何属性。所以这行“return (ServerSession) httpSession.getAttribute(SESSION_ATTRIBUTE);” 在方法 getServerSession() 内部返回 null ,这恰好触发了异常“No Session associated with request”。

那么,为什么 cayenne 服务器端会创建 e ne 会话而不使用之前创建的旧会话呢?我是否必须在查询中明确发送会话?

编辑:我在运行上面的四行代码时从 netbeans http-monitor 截屏: http 监控 tomcat 卡宴

0 投票
0 回答
955 浏览

objective-c - 使用 HessianKit 序列化 JSON 有效负载中的 Base64 字符串(Objective-C/Cocoa)

我正在尝试将我的 iOS 应用程序连接到现有的 Grails 后端服务器。后端通过使用 grails 远程处理插件(1.3 版)公开了一个 hessian 网络服务。我的 Android 应用程序成功调用了所有 web 服务方法。

我的目标是将 jpeg 图像从手机传输到服务器(适用于 Android 应用程序)。我的方法是使用 JSONKit 创建一个 JSON 对象,并将图像作为 base64 编码字符串包含在内。我在 XCode 4 项目中使用 HessianKit,ARC 针对 iOS 4.2 和 Nick Lockwood 的 NSData+Base64 类别用于 Base64 编码 (https://github.com/nicklockwood/Base64)。

这是我的代码:

问题是服务器在被应用调用时会抛出一个期望:

我的应用程序中的所有其他 JSON 有效负载(字符串、日期、数字等)都可以由服务器反序列化而没有任何问题,反之亦然,即将 base64 编码图像作为 json 有效负载从服务器作为响应发送到应用程序也有效。

在花了几个小时阅读错误报告和邮件列表之后,我怀疑问题可能是 HessianKit 仅支持 Hessian 1 协议,但远程处理 1.3 附带的 hessian 版本是 4.0.7。4.0.7 可能使用 Hessian 2 协议并且不向后兼容。但这只是猜测。

编辑:实际上,这个问题与 JSON 无关。当我将字符串作为普通字符串(而不是嵌入在 JSON 中)传递给 Web 服务时,也会引发相同的异常。

有人遇到过类似的问题并知道解决方案吗?

0 投票
1 回答
693 浏览

java - 使用 hessian 协议从客户端文件夹到 tomcat 服务器的图像传输

我的目标是通过 hessian 协议将图像(.jpg.png)从客户端文件夹上传到 tomcat6 服务器。并在服务器上使用opencv进行图像处理,然后将图像返回给客户端。

问题1。以下转移步骤是否正确?

  • test.jpg图像放在客户端的文件夹中
    -->转换test.jpgin client.java( main.java) 类以BufferedImage
    -->将其转换BufferedImage为 mat 或Iplimage在服务器中使用openCV

我已经从使用 Hessian 的 Simple Messaging Example 中设置了一个 hello world 示例,并从Hessian 中搜索了大型二进制数据 和其他网站,但仍然不知道如何使用它!

问题2。是否有相关的 Java 示例代码?

(我使用的是ubuntu12+netbeans7.2)

0 投票
0 回答
524 浏览

download - 如何使用Java Hessian库实现文件下载API功能

正如Hessian文档页面提到的那样,我正在尝试实现文件下载api:

文件下载接口

包装示例;

公共接口下载{公共输入流下载(字符串文件名,输入流数据);}

但我仍然不知道该怎么做?为什么下载函数需要一个 InputStream 参数并返回另一个 InputStream?

下载方法应该是从服务器上的文件中读取数据并将数据发送出去。这两个 InputStream 指的是什么?

有人可以解释一下吗?非常感谢一个工作示例!

0 投票
1 回答
201 浏览

java - Spnego / Kerberos 支持与 hessian

我爬了很多谷歌来找到一些关于这个主题的文档,但没有找到任何东西。我正在尝试使用 kerberos 票证访问受保护的服务器,但出现 401 错误。

我所做的是在调用 Web 服务之前添加带有 base64 编码令牌的标头

我知道 hessian 支持基本身份验证(HessianProxyFactory => setUser/PWD/BasicAuth),但我不确定 Spnego/Negotiate。

请注意,我们设法在另一个项目中使用 cxf 设置 spnego(它有 HttpAuthSupplierImpl),但这个使用的是 hessian。

问题:有可能还是我在浪费时间?谢谢

0 投票
1 回答
368 浏览

web-services - 拦截Hessian远程调用添加信息

我想这可能是不可能的,但以防万一......

我们有一个前端 Java 应用程序,它通过 Hessian 与(我们的)后端应用程序进行通信。出于日志记录和审计目的,我们需要将登录(在前端)的用户的 user_id 传递给后端。一个明显的解决方案当然是为所有方法调用添加一个 String 参数,但这需要大量工作并且不是很干净。

有没有办法拦截呼叫,用 user_id 装饰它(从会话中检索)并在后端获取该 user_id(然后将其设置在 ThreadLocal 等)?

0 投票
1 回答
2251 浏览

java - 找不到 javax.serverlet.GenericServlet 的类文件

我已经在类->头文件中停留了几天!

我已经通过http://netbeans.org/kb/docs/cnd/beginning-jni-linux.htmlhttp://ringlord.com/jni-howto.html在客户端上尝试了 jni 。它成功地从 JNI 的 (.cpp) 文件中返回“hello JNI C++”。这是我的步骤:

  1. 创建本机函数并在 client.java
  2. 在 Netbeans IDE 上清理并构建这个 client.java,然后生成一个 client.class 文件
  3. javah –jni [包].[类名]
  4. 像第一个参考一样创建一个动态库 C++ 项目,并将 client.h 放入源文件,并将一些 hello 代码放入 (.cpp) 文件 --->它可以工作!

但是,我尝试在 servlet 端做同样的事情,但它不起作用

  1. Servlet.java->Servlet.class:好的!
  2. Servlet.class->Servlet.h:失败!!! 错误:无法访问 javax.servlet.GenericServlet 类文件,找不到 javax.servlet.GenericServlet

以下是我迄今为止找到并尝试过的解决方案,

  • 检查包名

  • sudo gedit /etc/profile,sudo gedit .bashrc,sudo /etc/environment;在它们上添加 JAVA_HOME & CLASSPATH,并获取它们以更新,然后 echo $JAVA_HOME, echo $CLASSPATH 进行验证

  • 从http://www.jarfinder.com/index.php/java/info/javax.servlet.GenericServlet下载 servlet-api-6.0.14.jar & servlet-api-5.0.16.jar ,并添加以上两个( .jar) 通过 netbeans IDE->server->property->libraries->Add JAR

请告诉我如何解决这个问题,非常感谢!顺便说一句,我正在使用 hessianServlet

0 投票
1 回答
496 浏览

java - 是否有任何文档说明使用 Hessian 时会引发哪些运行时异常或潜在原因?

我有一个使用 Hessian 进行 Web 服务调用的 Java 1.4 Web 应用程序。我试图将它写得尽可能健壮和透明。在调用代理时,我不希望任何粗麻布异常使其脱离我的委托类。我希望能够捕获任何 Hessian 运行时异常,解开它们并重新抛出一些主要异常(例如,ConnectException)或将它们重新包装在另一个异常中。但是找到这些例外是一个挑战。

我在委托类中使用的每个方法都有这种结构。

这在我自己的测试中运行良好,但其他一些运行时异常正在出现,我错过了它们。例如,我们最近发现它可能会抛出HessianConnectionException由 a 引起的SocketException(远程服务器已关闭)。我完全期待我目前拥有的东西会抓住它。HessianConnectionException不是从 派生的,所以HessianRuntimeException现在我必须添加要捕获的异常。

好吧,这对我来说很好,它必须完成......但它在哪里结束?我找不到任何关于我需要注意的其他运行时异常或其任何根本原因的文档。

我希望只要抓住HessianExceptionHessianRuntimeException足够了,因为这些是我可以在此处找到的唯一运行时异常。但是对于这些新发现的问题,我不确定我想要解开哪些异常,因为它看起来像是一个混合包(据我所知,SocketException并且ConnectException是同一问题的不同表示)。

在通过代理调用方法时抛出哪些运行时异常及其所有潜在原因是否有任何文档?

0 投票
1 回答
554 浏览

java - Hessian 排除字段

编写了 hessian 服务之后,我在我的 spring 应用程序中设置了 Hessian webservice 及其工作。

使用 org.springframework.remoting.caucho.HessianServiceExporter - SpringFramework 3.1,Hessian 4.0.1,

如何从序列化中排除某些字段。我可以编写一个不包括 Role 的包装器/继承类,但我更喜欢使用现有类本身的简单(如注释)。

0 投票
1 回答
2921 浏览

java - 带有 REST、Java Spring 的 Hessian Web 服务

REST 服务是否可以与 Hessian 服务协同工作?

详细说明我有这个界面:

我创建这个接口的想法是它是一个纯粹的 RESTful 服务,但需求的变化也需要我实现一个 Hessian 服务。

将这个接口用于 Hessian 时,Spring 会抛出如下错误:

这清楚地告诉我,要么我错误地集成了 REST 和 Hessian,要么这两者不能同时存在于同一个服务中......

所以 Hessian 不能与 REST 一起工作,还是我错过了一些配置来让魔法发生?

(如果人们要求,将提供额外的片段。我不太确定你需要什么,我不想发表 tl;dr 帖子。)