gpt4 book ai didi

java - 如何将 JavaSE 客户端连接到 JavaEE 服务器并发送可序列化对象?

转载 作者:行者123 更新时间:2023-11-30 02:42:12 25 4
gpt4 key购买 nike

我正在尝试使用 JavaEE 服务器和 JavaSE 客户端(可能还有在 Android 和 IOS 上运行的客户端)构建应用程序。我希望客户端能够将可序列化的对象或类似的对象发送到服务器。然后服务器应该执行一些操作并向客户端发送响应。我不知道从哪里开始,但我试图在下面概述我的意图。

我并不是在寻找完整的代码来实现这一点,而是寻找一些指针和确认(或反驳)我是否走在正确的轨道上。也许是一个起点:)

我有一个可序列化的类,如下所示:

public class TestMessage implements Serializable {
public String str;
}

在客户端我想做这样的事情:

try {
InetAddress address = InetAddress.getByName(
new URL("http://127.0.0.1/hello").getHost());
Socket connection = new Socket(address, 46588);
connection.setSoTimeout(5000);
try (ObjectOutputStream outgoing = new ObjectOutputStream(
new BufferedOutputStream(connection.getOutputStream()
))) {
TestMessage test = new TestMessage();
test.str = "Hello World";
outgoing.writeObject(test);
outgoing.flush();
}
} catch (UnknownHostException ex) {
System.out.println("Unknown Host...");
} catch (IOException ex) {
System.out.println("i/o exception...");
}

我想我可以使用 @ServerEndpoint Bean,但这会创建一个 WebSocket,我似乎无法使用套接字连接到它。我怀疑我需要在套接字中实现 HTTP 内容,但是如何发送我的对象呢?

我还考虑使用 @Startup Bean 并打开 ServerSocket,但似乎我必须自己处理线程,这有点违背了使用 JavaEE 的目的。归结起来就是:

  • 如何启动多个 JavaSE 客户端可以同时连接的 JavaEE Bean?
  • 如何在 JavaEE 服务器和 JavaSE 客户端之间来回发送可序列化对象或类似的对象(例如 JSON)?

最佳答案

不确定您是否尝试过使用 REST 服务来解决您的问题,因此我建议创建 REST 服务。网上有一些很棒的资源。这是一个链接供您引用。

https://spring.io/guides/gs/rest-service/

这样做,您将能够轻松实现以下目标。

  1. 利用 HTTP 使您的 iOS 和 Android 与服务器上的应用程序进行交互。这不仅仅意味着您仅将 HTTP 用于传输层请求,而且您将能够使用该协议(protocol)进行全面的内容协商,并且您的服务器将控制协商

  2. 服务器上的资源将根据您的选择灵活表示。

与您建议的方法相比,这种方法还有其他好处,但我将其留给您探索。我在下面列出了一些链接供您引用。

REST 服务教程 https://www.tutorialspoint.com/restful/index.htm

帮助您避免将此方法与 SOAP 进行比较 SOAP vs REST (differences)

RESTful Web 服务的多层架构 https://www.ibm.com/developerworks/library/wa-aj-multitier/

关于java - 如何将 JavaSE 客户端连接到 JavaEE 服务器并发送可序列化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41313144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com