【问题标题】:Receiving Disparate Content In Java在 Java 中接收不同的内容
【发布时间】:2010-10-06 11:53:46
【问题描述】:

问题:

我需要从多个不同来源接收不同类型的内容,将它们标准化,然后通过 JDO 使它们持久化。

天真的解决方案?:

为每种数据类型创建并侦听特定端口。

做一堆复杂的解析

看似理想的解决方案:

具有自定义 URL 类型,即 FOO://myhost.tld、BAR://myhost.tld。然后,任何应用程序都可以发送到特定于自定义类型的 URL,并且主机将理想地使用 Java 的 URLConnection 和 URLStreamHandler 抽象类来创建一个将产生适当的规范化线程的工厂。或者,如果有其他方法可以检索连接 URL,我认为就足够了

这可能吗?我查看了 API 和其他文档,无法确定是否可以将这些与 Java 服务器套接字一起使用。

我应该提到,在某些(很多?大多数?)情况下,我不对客户端代码负责。

【问题讨论】:

    标签: java persistence collections normalization


    【解决方案1】:

    MIME 是一种相当标准的交流内容类型和处置方式。

    【讨论】:

      【解决方案2】:

      您所说的“URL 类型”是 URL 的协议部分,它所做的只是告诉客户端该 URL 上的服务器将期望它使用哪种协议。

      它不是允许服务器找出调用它的 URL 的“元协议”的一部分,除非您使用包含此信息作为标头的协议——这种情况并不常见。另请注意,协议通常暗示默认端口,除非 URL 还指定了端口。

      Java 的整个 URLConnection / URLStreamHandler API 是面向客户端使用的,而不是服务器,所以我不相信它可以按照你想要的方式使用。

      您想出的前两个替代方案几乎是您的选择:对不同类型的输入使用不同的端口,或者让客户端发送一个标头来指定随后的输入类型。

      【讨论】:

      • 感谢您的回复。这些是我猜到但不确定的事情。看起来我可以使用 ServerSocketChannel 抽象类来实现我试图描述的东西,而不是自定义协议作为标识符。
      【解决方案3】:

      我最终采用的解决方案是使用 java nio 库和一个线程池,其中包含一组 ServerSocketChannel 和附加的内容处理程序

      【讨论】:

        猜你喜欢
        • 2018-10-12
        • 1970-01-01
        • 1970-01-01
        • 2016-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-08
        • 1970-01-01
        相关资源
        最近更新 更多