从java应用程序中调用不同的Java应用程序

时间:2013-08-01 21:45:30

标签: java mysql netbeans

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

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

我该如何执行这样的事情?

2 个答案:

答案 0 :(得分:0)

                 Runtime run;
                 Process pr = null;                    
                 run = Runtime.getRuntime();
         pr = run.exec("your program.jar"); 
         pr.getInputStream().close();
         InputStream eos = pr.getErrorStream();

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

答案 1 :(得分:0)

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

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

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

现在的问题是,你是如何实现的。这个答案将归结为你希望实现它想要实现它的方式,但是,我还要补充一点,客户端应首先使用服务器进行身份验证,这意味着必须使用户输入用户名和密码以便能够访问数据(除非它是公共可访问的API,然后您可能不在乎)。

您可以使用

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

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

您可以使用

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

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

这也是一个更加困难的方法,因为您负责处理低级协议和错误处理(RMI为您负责)。

但是,这种方法可以让其他客户端有机会连接到您的服务器(只要您只使用普通的套接字和序列化对象;)。)。

这是很多工作......

您可以使用

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

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

现在所有这些都允许您通过网络提供安全连接,通过SSL,您只需要建立从客户端到服务器的正确连接,这样您就可以获得更高级别的安全性。

每个都隐藏服务器层后面的数据库访问权限,为数据库添加额外的保护。