在 Java 中接收不同的内容

发布于 2024-07-13 13:44:39 字数 463 浏览 5 评论 0原文

问题:

我需要从多个不同来源接收不同类型的内容,对它们进行规范化,然后通过 JDO 使它们持久化。

天真的解决方案?:

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

或者

进行一系列复杂的解析

看似理想的解决方案:

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

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

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

The Problem:

I need to receive different types of content from a number of different sources normalize them and then make them persistent through JDO.

Naive Solution?:

Create and listen on a specific port for each data type.

OR

Do a bunch of complicated parsing

A Seemingly Ideal Solution:

Have custom URL types i.e. FOO://myhost.tld, BAR://myhost.tld. any application could then send to the URL specific to the custom type and the host would ideally use Java's URLConnection and URLStreamHandler abstract classes to create a factory that would spawn the appropriate normalization thread. Or if there is anyway other way to retrieve the connection URL I think that would be sufficient

Is this possible? I have looked through the API and other docs put cannot figure out if it is possible to use these with a Java server socket.

I should mention that in some (many? most?) cases I am not responsible for the client code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

骄兵必败 2024-07-20 13:44:40

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

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

Java 的整个 URLConnection / URLStreamHandler API 适合在客户端而不是服务器中使用,因此我不相信它可以按照您想要的方式使用。

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

What you're calling "URL type" is the protocol part of the URL, and all it does is tell the client which protocol the server at that URL is going to expect it to talk.

It is NOT part of a "meta-protocol" that would allow the server to find out the URL it's being called with, unless you use a protocol that contains this information as a header - which is not commonly the case. Note also that protocols usually imply a default port unless the URL also specifies a port.

The entire URLConnection / URLStreamHandler API of Java is geared towards usage in a client, not a server, so I don't believe it can be used the way you want.

The first two alternatives you came up with are pretty much your options: either use different ports for the different kinds of input, or have the clients send a header that specifies the kind of input that follows.

撩心不撩汉 2024-07-20 13:44:40

我最终采用的解决方案是使用 java nio lib 和一个带有附加内容处理程序的 ServerSocketChannel 集合的线程池

The solution I ended up going with is using the java nio lib and a thread pool with a collection of ServerSocketChannels with content handlers attached

揽月 2024-07-20 13:44:39

MIME 是一种相当标准的传达内容类型和配置的方式。

MIME is a fairly standard way of communicating content type and disposition.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文