Java Pojo类 -> ASN.1用于RPC

3

我希望使用Java接口直接定义消息格式进行RPC,然后使用一些工具生成ASN.1文件。

  1. 你知道我可以使用哪些工具吗?(如果可能的话,不要强制我在描述格式的接口中使用任何来自ASN库的类型。)

  2. 你知道是否有在JavaSE程序中使用ASN.1进行RPC的库吗?


你看过关于 Java ASN.1 编译器 的问题吗? - MarcoS
是的,但这不是我要问的。 - Vincent Cantin
1
ASN.1编码代表什么意思?你是否在使用ASN.1进行序列化?RPC是在同一台机器上,网络连接还是位置无关的? - this.josh
4个回答

2
我猜测注释类并编写生成ASN的注释处理器可能是一种方法,但我无法猜测需要花费多少工作量。

这是一种方法,如果我想自己做的话(我可以,我有一段代码做了类似的事情),但我正在寻找已经存在的东西。 - Vincent Cantin
我没有找到任何已经存在的内容,所以我接受这个答案作为解决方案。 - Vincent Cantin
我很高兴你接受了,尽管我希望你能找到更好的东西。 - Rostislav Matl

1

我想你已经检查过了

  • BinaryNotes
  • Bouncy Castle
  • 除了
  • PowerASN

你想要类似于Spring远程导出器的东西,但是并不存在这样的设施。如果你使用Netty、Mina、Pure NIO、OIO、Bouncycastle、Spring、AOP开始一个项目,可能会成为一个热门项目,可以称之为ASNExporter。


谢谢你提供的链接,我查看了其中一些,但没有找到我需要的内容。 - Vincent Cantin

0

您可能想要查看Java Web Services Developer Pack 2.0,其中包括基于ASN.1标准构建的Fast Infoset 1.0.1 FCS发布加速技术。Fast Infosets是一项非常有趣的技术,几年前由SUN Microsystems开始开发,仍然可在Glassfish中使用,已经取代了JWSDP。

通常情况下,Fast Infoset实现了SAX和StAX接口。这允许使用任何支持SAX或StAX的XML技术与Fast Infoset一起使用。因此,将Java对象编组为ASN.1并从ASN.1解组为Java对象通常很容易。在其中一次会议上,Fast Infoset也被称为二进制XML

因此,您可以使用JAXB注释注释您的POJO,并使用JAXB将其编组为ASN.1,或者您可以使用不太侵入性的库,如XStream来完成相同的操作。

一些链接:


谢谢您的回复,但它并没有回答我的非常具体的问题,即输入是“包含字段类的Java源文件”,输出是“Asn.1文件”。 - Vincent Cantin

0

看一下Apache Harmony项目

该网站表示:

ASN.1框架提供了一种通用、简单和高效的方法来处理ASN.1基本类型、符号和编码规则。这个框架可以被描述为Java*对象和它的ASN.1编码形式之间的一层,如图1所示。

Figure 1


我已经看过这个项目了,但是我没有看到任何地方可以“从Java类生成ASN.1”。这个具体的操作是我的问题的主题。 - Vincent Cantin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接