2009-02-09 19 views
0

問題:在Java中接收不同內容

我需要接收來自多個不同來源的不同類型的內容,然後使它們標準化,然後使它們通過JDO持久化。

天真的?:

創建並偵聽特定端口的每個數據類型上。

OR

做了一堆複雜的解析

一個看似理想的解決方案:

具有自定義URL類型即FOO://myhost.tld,BAR://myhost.tld。任何應用程序都可以發送到特定於自定義類型的URL,並且主機最好使用Java的URLConnection和URLStreamHandler抽象類來創建一個工廠,以產生適當的標準化線程。或者,如果還有其他方式來檢索連接URL,我認爲這將足夠

這可能嗎?我已經查看了API和其他文檔,但無法弄清楚是否可以將這些與Java服務器套接字一起使用。

我應該提到,在一些(很多?大多數?)情況下,我不對客戶端代碼負責。

回答

0

你調用的是什麼「URL類型」是URL的協議部分,它所做的一切就是告訴客戶端該URL的服務器希望它說哪種協議。

它不是「元協議」的一部分,它允許服務器找出它被調用的URL,除非你使用包含這個信息的協議作爲頭部 - 這通常不是這種情況。還要注意,協議通常暗示默認端口,除非URL也指定端口。

Java的整個URLConnection/URLStreamHandler API適用於客戶端,而不是服務器,因此我不相信它可以按照您想要的方式使用。

您提出的前兩種選擇幾乎是您的選擇:爲不同類型的輸入使用不同的端口,或讓客戶端發送指定後續輸入類型的標頭。

+0

感謝您的答覆。這些都是我曾猜測過但不確定的事情。看起來好像我可以使用ServerSocketChannel抽象類實現類似於我想描述的內容,而不是自定義協議作爲標識符。 – tapi 2009-02-09 20:52:55

1

MIME是一種相當標準的溝通內容類型和處置方式。

0

我結束了使用的Java NIO lib和線程池與內容處理器ServerSocketChannels集合去解決方案連接