问题标签 [unmarshalling]

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 投票
2 回答
6492 浏览

java - Java RMI(服务器:TCP 连接空闲/客户端:Unmarshalexception (EOFException))

我正在尝试实现计算 Pi 的 Sun Tutorials RMI 应用程序。我遇到了一些严重的问题,尽管我一直在搜索整个网络和几个 javaskilled 人,但我找不到解决方案。我希望你能结束我的沮丧。

疯狂的是,我可以从台式计算机上的 cmd 运行应用程序。在我的笔记本电脑上完全相同的目录中使用完全相同的代码尝试完全相同的事情会产生以下错误。当我尝试将客户端连接到服务器时会出现问题。

我不认为错误是由于我的策略文件造成的,因为我可以在桌面上运行它。它必须在其他地方。有没有人尝试过同样的方法,你能给我一个提示我的问题出在哪里吗?



在此先感谢佩里

0 投票
2 回答
2191 浏览

java - java.rmi.UnmarshalException:无法通过服务器拉取客户端类

我在两台机器上设置了一个 RMI 客户端/服务器,当服务器不需要客户端定义的类时,它们在简单的情况下工作正常。但是,当我需要使用在客户端定义的类时,我无法让服务器解组这些类。我怀疑这是我java.rmi.server.codebase作为参数传递给客户端应用程序的属性的问题。我遵循了 Sun 的 RMI 教程跟踪,我认为我已经完全遵循了这些步骤,只是在执行客户端和服务器时我没有指定类路径参数,因为它们在根包目录正上方的目录中执行(但是我也尝试过没有影响)。

我在尝试执行下面详细描述的不同客户端组合时遇到的异常都是相同的:

RmiServer exception: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: test.MyTask at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:353) at sun.rmi.transport.Transport$1.run(Transport.java:177) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:173) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:636) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178) at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132) at $Proxy0.execute(Unknown Source) at test.myClient.main(myClient.java:32)

详情如下:

我的客户端/服务器 rmi 设置在路由器后面的家庭网络上。路由器分配给我将调用的静态 IP 地址myhostname。在指向正确机器的路由器中设置了适当的端口映射。

角色、机器、操作系统、IP 地址:

server, venice, linux ubuntu 9.10, 10.0.1.2
client, naples, mac os x leopard, 10.0.1.4

我在里面启动服务器端如下/home/andrews/workspace/epsilon/bin

1 在默认端口 1099 上启动注册表:

venice% rmiregistry &

2 在端口 2001 上启动 Web 服务器,指向通用接口的代码库:

venice% java webserver/ClassFileServer 2001 /home/andrew/workspace/epsilon/bin

3 注册服务器对象的启动服务器应用程序(test/myServer 中的主类):

venice% java -Djava.rmi.server.codebase="http://myhostname:2001/" -Djava.security.policy=server.policy -Djava.rmi.server.hostname=myhostname test/myServer &

现在里面的客户端/Users/andrews/Development/Java/workspace/epsilon/bin

1启动一个本地Web服务器,可以将客户端类服务器提供给服务器(不确定是否需要,但我添加了我尝试过,但仍然没有成功;我已将端口映射添加到2001的路由器到venice,对于2002 年至naples)

naples$ java webserver/ClassFileServer 2002 /Users/andrews/Development/Java/workspace/epsilon/bin/

尝试运行客户端(注意:我没有指定-cp参数,因为客户端在根包目录的正上方执行):

1 使用 http 主机名尝试 #1

naples$ java -Djava.rmi.server.codebase=http://10.0.1.4:2002/ -Djava.security.policy=client.policy test.myClient myhostname

注 1:最后的myhostname参数传递给客户端,以便它解析为服务器的 rmi 主机名。

注意2:我也尝试过使用localhost:2002而不是10.0.1.4:2002

注意 3:我尝试使用myhostname:2002因为myhostname分配给路由器并且我有正确的端口映射设置,这个地址应该解析为naples而不是venice

2尝试#2:

naples$ java -Djava.rmi.server.codebase=file:/Users/andrews/Development/Java/workspace/epsilon/bin/ -Djava.security.policy=client.policy test.myClient myhostname

注1:代码库url格式是正确的,我创建了一个小程序将当前文件目录路径转换为url并使用它。使用file:///Users...具有相同的效果。

其他注意事项:

1 我的服务器和客户端策略文件正确指定了路径,因为我已经用好的和坏的路径测试了这个设置,并且得到了坏路径的安全异常

2 如果我不使用客户端定义的对象,则此设置有效,客户端正确连接到服务器并且服务器执行。

3 当我将客户端类放在服务器的类路径中的服务器上时,一切正常。

感谢所有帮助。

0 投票
4 回答
28342 浏览

java - 获取 java.rmi.UnmarshalException:无法识别的方法哈希:远程对象不支持的方法

我是 RMI 技术的新手。

当我运行 rmi 客户端程序时,出现异常:java.rmi.UnmarshalException: unrecognized method hash: method not supported by remote object。我正在使用 jdk1.5

远程方法的参数是序列化对象。

这些是服务器代码...

这是远程接口

这是服务器实现类

这是班级订单

我在客户端也有相同的接口和订单类。

这是客户端代码

任何人都可以帮我解决这个问题吗?

提前致谢 Renjith M

0 投票
2 回答
4531 浏览

delphi - 简单编组解组对象

json支持是delphi 2009和delphi 2010的新功能之一。我想知道是否有任何简单的函数可以像在超级对象库中那样直接在字符串和对象之间进行编组/解组。

例子:

0 投票
1 回答
6236 浏览

java - 从 XML 字符串及其存储在字符串中的模式进行内存解组,可能吗?

假设我将一个 XML 字符串存储到一个变量中

以及与此 XML 相关的架构定义在另一个中:

您是否认为有一种方法可以验证和解组“resp”到对象(例如使用 JAXB)?有没有人已经尝试或成功实施了这些东西?

提前,非常感谢您的任何建议... Seb

0 投票
1 回答
6139 浏览

java - JiBX 解组 - 是否可以告诉 JiBX 忽略元素的顺序?

有没有办法解决这个问题?

例如,我的 XML:

解组时,没有错误,但是当我更改顺序时:

它失败了org.jibx.runtime.JiBXException: Expected "group" end tag, found "idExt" start tag (line 4, col 2)

我的解组(实现 Struts2 ContentTypeHandler 接口):

和绑定:

那么,JiBX 可以忽略标签顺序吗?

0 投票
1 回答
19792 浏览

java - 如何使用 JAXB 编组/解组 MyBean 的集合

我有一个 MyBean 注释

编组/解组 MyBean 没有问题,例如

如何使用 JAXB 编组/解组集合或列表?

我的尝试导致此错误:

0 投票
3 回答
1016 浏览

java - 基于兄弟元素的 JAXB 解组

我有以下 xml 片段(这是我无法控制的):

我想<subcategory>被编组到一个看起来像这样的类:

换句话说,由<category>标签产生的对象应该被传递给由<subcategory>元素产生的对象。

我怎样才能做到这一点?这甚至可能吗?我知道XmlAdapter,但我看不出有办法抓住父母。

如果可以在构造函数中完成,我会更喜欢它,因此实例永远不会处于无效状态,但我会选择不同的解决方案,只要我不必为每个实例手动设置父级SubCategory.

0 投票
2 回答
3592 浏览

java - Spring with Castor - 初始化应用程序上下文时出现空指针异常

我正在尝试使用 spring 注册我的脚轮映射文件,但我似乎得到了一个空指针异常。

在我的应用程序上下文中,我有:

DistributionSamplerMappings.xml 与应用程序上下文位于同一目录中。

我试过使用 spring-xml jar 1.2.1 和 1.5.3。但他们似乎都没有帮助。

被抛出的异常是:

我正在使用 Spring 2.5.6 和 Castor 1.3.1。

环顾四周,我发现我不是唯一遇到此问题的人,但我似乎无法找到解决方案。

任何帮助将非常感激。

0 投票
5 回答
14074 浏览

xml - JAXB Unmarshall 创建了一个空对象

我正在使用 JAXB 将 XML 文件解组为对象树。根对象是非空的,但它的所有成员都是空的,即使 XML 文件中有数据。我的对象类是使用来自 wsdls 的 Axis2 生成的。我有 ObjectFactory 类、jaxb.in​​dex 类、package.info 注释等。

我的问题和这个讨论一样:http: //old.nabble.com/AXIS2,-JAXB---Unmarshalling-td26847419.html

首先也是最重要的:有没有办法让它正确填充数据?

如果没有,是否有一个很好的 Axis2 或 JAXB 替代库可以做同样的事情,但可以很好地相互配合?