首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从java app中调用不同的java app

问从java app中调用不同的java app
EN

Stack Overflow用户
提问于 2013-08-02 05:45:30
回答 2查看 50关注 0票数 0

我需要保护我的主要java应用程序和MYSQL服务器之间的连接。现在,我在我的主要java应用程序中有一个类,其中包含有关我的SQL服务器的信息(登录详细信息;用户、密码、模式等)。

我试着混淆那个类,但没有成功。然后我听到一些关于用连接信息调用外部java应用程序,并安全地检索该信息的事情。

我怎么能执行这样的事情呢?

EN

回答 2

Stack Overflow用户

发布于 2013-08-02 06:20:27

代码语言:javascript
复制
                 Runtime run;
                 Process pr = null;                    
                 run = Runtime.getRuntime();
         pr = run.exec("your program.jar"); 
         pr.getInputStream().close();
         InputStream eos = pr.getErrorStream();

您可以使用文件将信息传递给jar应用程序

票数 0
EN

Stack Overflow用户

发布于 2013-08-02 08:16:31

在处理客户机/服务器样式的应用程序时,所有的业务逻辑,包括持久层,都应该在服务器端进行维护。

也就是说,客户端连接到某个服务器进程并发出请求。它永远不应该关心数据是如何管理或存储的。它只关心数据的获取和操作。这也意味着您集中了与该数据相关联的业务,这意味着如果数据发生更改,您不太可能需要更改客户端。

这也意味着数据库的所有访问信息永远不会离开服务器的域。

现在的问题是,你如何实现。这个答案将确切地归结为你想要实现什么,以及你想要实现它的方式,但是,我还想补充说,客户端应该首先通过服务器的身份验证,这意味着为了能够访问数据,必须让用户输入用户名和密码(除非它是一个公共的可访问的API,然后你可能并不关心)。

你可以使用

RMI。这将允许您公开客户端可以与之交互的服务器对象。如果您希望将对象从服务器发送到客户端,这是很好的选择。它允许客户端与Java对象交互,就好像它们是本地对象一样。

从编码的角度来看,这是一个(相对)简单的解决方案,因为您正在处理Java对象。但问题是,只有Java客户端(具有正确的库)才能访问服务器。

你可以使用

普通Sockets。这将允许您连接到服务器上的服务并与其通信。

您甚至可以在客户端和服务器之间序列化对象,允许应用程序处理Java对象。

这也是一种困难得多的方法,因为您将负责处理低级协议和错误处理( RMI会为您处理这些问题)。

然而,这种方法确实为您提供了其他客户机连接到您的服务器的机会(只要您只使用普通套接字和序列化对象;)。

这是很多工作..。

你可以使用

某种web服务(例如Tomcat下的Servlet或J2EE服务器的事件),它将使用简单的HTTP请求来列出可用服务/函数,这些服务/函数将返回客户端随后需要解析的诸如JSON或XML响应。

到目前为止,这是最开放的,也可能是最常见的解决方案。它需要一些工作才能运行,但比使用套接字要少得多,而且也是最灵活的,因为你不需要每次想要更改或更新服务时都不释放任何库。

现在,所有这些都允许您通过SSL通过网络提供安全连接,您只需要建立从客户端到服务器的正确连接,因此您已经获得了额外的安全级别。

每种方法都将数据库访问隐藏在服务器层之后,从而为数据库增加了额外的保护。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18005190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档