[英]How to connect a JavaSE client to JavaEE server and send a Serializable object?
我正在尝试使用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,但我似乎无法使用Sockets连接。 我怀疑我需要在Sockets中实现HTTP内容,但是如何发送对象?
我也在考虑使用@Startup Bean并打开ServerSocket,但是看来我必须自己处理线程,这将使使用JavaEE的目的遭到破坏。 归结为:
不知道您是否探索过使用REST服务来解决您的问题,所以我建议您创建REST服务。 网上有一些很棒的资源。 这是一个供您参考的链接。
https://spring.io/guides/gs/rest-service/
这样做,您将可以轻松实现以下目标。
利用HTTP使iOS和Android与服务器上的应用程序进行交互。 这不仅意味着您仅将HTTP用于传输层请求,还可以使用协议进行全面的内容协商,并且服务器将控制协商
您在服务器上的资源将灵活地代表您的选择。
这种方法对您建议的方法还有其他好处,但我留待您自己研究。 我在下面列出了一些链接供您参考。
REST服务教程https://www.tutorialspoint.com/restful/index.htm
为了帮助您避免将此方法与SOAP SOAP和REST(差异)进行比较
RESTful Web服务的多层体系结构https://www.ibm.com/developerworks/library/wa-aj-multitier/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.