将数据从一个 Java 应用程序发送到另一个应用程序

Send data from one Java application to another

我必须将 XML 文件从一个 java 应用程序发送到另一个应用程序。

目前,它是这样工作的: - 从应用程序 1 导出到本地 XML-文件 - 在应用程序 2

中导入本地 XML-文件

现在我必须通过网络服务来完成这项工作。是否可以在应用程序 1 中创建一个 JAX-WS Web 服务,并使用所需的数据重定向到应用程序 2?

我可以将数据(对象)作为序列化对象发送,而不是 XML 文件。但这可能吗?如果是这样,怎么办?

这两个应用程序都是用 Eclipse-Scout 编写的。

提前致谢。

如果您的两个应用 运行 在不同的机器上,webservice 是简单而有用的。

发送服务器: 使用 http 库(post 或获取)

1只保留你的档案。只需使用 HTTP / POST。适用于二进制文本

2更简单:如果你的数据是小文本,你可以使用HTTP / GET(注意特殊字符:你可以对它们进行编码)。

3 如果你能把所有的数据放在一个结构(对象)中,就把它序列化,把结果放在一个字符串中,然后发送。

接收服务器:

如果使用tomcat,扩展HttpServlet,通过doPost或doGet获取

或者您可以使用另一个轻型 http 服务器

或 soap 库(不需要)。

DOPOST/DOGET

发送服务器: HttpURLConnection conn= (HttpURLConnection) url.openConnection(); // 等等

接收服务器:

public class MyServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String one_parameter = request.getParameter("name_of_parameter");

有关更多说明,请参阅这些链接:

doGet and doPost in Servlets

(评论有点长)

您可能希望远离像 JAX-WS 这样臃肿的东西,而只使用标准的 Servlet 和 JAXB 或 XStream for de-/serialisation。

此外,永远不要在未经身份验证的 inputs/transport 上使用 Java(二进制)反序列化或默认 XStream(例如 HTTP 或不受信任的客户端,即使使用 HTTPS)。它总是会导致远程代码执行漏洞,如果不重新开发您的网络服务接口就无法缓解。最近 instance...