Java桌面应用程序中的日志、数据库和邮件支持

Java桌面应用程序中的日志、数据库和邮件支持,java,jakarta-ee,log4j,desktop-application,c3p0,Java,Jakarta Ee,Log4j,Desktop Application,C3p0,我是一名JavaEE开发人员,我们通常使用Weblogic部署我们的应用程序。现在我面临一个新的桌面应用程序,它需要日志记录、数据库连接和邮件 经过一些调查,我意识到桌面应用对我来说是一个全新的世界,我不确定是否选择了正确的库来支持我的应用 以下是我的问题: 在我们的Weblogic项目中,我们使用了Log4j,我想在我的桌面应用程序中再次使用它。这是个坏主意吗?我应该使用更好的日志框架吗 在Weblogic中,我们使用JNDI检索数据库连接,但现在似乎不可能这样做。如何在桌面应用程序中执行相同

我是一名JavaEE开发人员,我们通常使用Weblogic部署我们的应用程序。现在我面临一个新的桌面应用程序,它需要日志记录、数据库连接和邮件

经过一些调查,我意识到桌面应用对我来说是一个全新的世界,我不确定是否选择了正确的库来支持我的应用

以下是我的问题:

  • 在我们的Weblogic项目中,我们使用了Log4j,我想在我的桌面应用程序中再次使用它。这是个坏主意吗?我应该使用更好的日志框架吗

  • 在Weblogic中,我们使用JNDI检索数据库连接,但现在似乎不可能这样做。如何在桌面应用程序中执行相同的操作,以便连接远程数据库?c3p0+数据库驱动程序的组合是一种很好的方法吗

  • 是否有任何框架/JAR将所有这些东西(log+ddbb+mail)作为一个集成的解决方案提供?同事们告诉我可以帮忙。我也发现了

  • 在我们的Weblogic项目中,我们使用了Log4j,我想在中再次使用它 我的桌面应用程序。这是个坏主意吗?我应该使用更好的日志记录吗 框架

    不,这不是一个坏主意,非常有效。就我个人而言,我会选择
    java.util.logging
    ,因为它可以很好地完成这项工作,并且可以减少应用程序的占用空间(存储)。虽然,它的配置有点棘手

    在Weblogic中,我们使用JNDI检索数据库连接,但现在它 似乎不可能做到这一点。我如何在一个场景中执行相同的操作 桌面应用程序,以便我可以连接远程数据库?是 结合c3p0+数据库驱动程序这是一个很好的方法吗

    您可以使用纯
    java.sql
    JDBCAPI(internet上有大量的示例)直接连接到数据库,但必须始终将专有数据库驱动程序作为应用程序的一部分分发(mySQL、Oracle、DB2等)。此外,通过使用这些驱动程序的专有API(相当容易封装),可以直接使用这些驱动程序提供的连接池。尽管如此,仍存在一些问题:

  • 潜伏期;数据库协议对延迟(客户端和数据库服务器之间的距离)相当敏感。在英国建立数据库,在美国建立桌面客户端可能不是一个好主意
  • 安全1;您必须将数据库用户凭据分发到每个桌面客户端。请注意这一点
  • 安全2;您的数据库安全要求可能需要传输安全性(数据包加密)
  • 变革管理;将不向后兼容的更新应用到数据库需要更新所有桌面客户端(相信我,这并不有趣)
  • 网络;根据您的环境,某些端口和/或协议可能会被阻止
  • 有没有提供所有这些东西的框架/JAR(log+ddbb)+ 邮件)作为一个集成的解决方案?同事们告诉我,春天可以帮忙。 我还发现了战争

    日志记录和数据库访问不是问题,在没有任何第三方框架的情况下工作得相当好。当然,这些框架可能在其他方面(抽象、DI、JDBC抽象等)提供价值,但这是一个详细软件设计的主题。无论使用何种框架,直接从桌面应用程序发送电子邮件都可能成为一个问题。请记住以下几点:

  • 您要使用哪个SMTP中继服务器
  • 在企业环境中,您的IT运营团队可能不允许您从每个桌面使用其SMTP服务器(请记住垃圾邮件)


  • 结论:在桌面场景中,应用服务器也不是一个坏主意。您应该让您的桌面应用程序仅通过使用JSON、XML、HTTP/HTTPS上的SOAP或RMI等与应用程序服务器通信。该应用程序应负责复杂的任务,如数据库访问、事务管理、细粒度安全、电子邮件、,等等。

    非常感谢您快速而详细的回复!我与系统部门进行了一次会议,他们向我解释了为什么JNDI不起作用(基本上,端口是关闭的)。他们还告诉我,邮件不是问题,因为要创建的新应用程序将安装在两台受控制的机器上。我很快尝试了一下Spring,但对我来说太多了。Warework看起来容易多了(顺便说一句,很好的例子),但对于我的第一个桌面应用程序,我将尝试我知道的技术,所以这里是我的最终选择:log4j+ddbb驱动程序(专有连接池)+JavaMail。