【问题标题】:Java - VM option to specify network deviceJava - 指定网络设备的 VM 选项
【发布时间】:2015-07-22 14:20:54
【问题描述】:

有点拘束(双关语)。

我们有一个 WebSphere 应用程序服务器,它使用邮件包通过 JavaMail 通过 SMTP 发送电子邮件。我们有一个 RHEL 机器,具有非 root 访问权限(无法更改),它有两个网络设备,eth0 和 eth1。邮件包被大量应用程序使用,更新和更改的工作量很大。以前,我们不必担心这个..

我需要从 eth1 发送邮件,但是我无法配置它。 这 https://www-01.ibm.com/support/knowledgecenter/SSD28V_8.5.5/com.ibm.websphere.nd.doc/ae/trun_multiplenic.html 没有帮助,因为它不控制拨出电话。

尝试了许多 JavaMail VM 选项,例如 mail.smtp.localhost / localaddress(但我从一开始就知道这将用于传入端口绑定,无论如何都尝试过)。

不幸的是,我没有遇到允许我通过 JavaMail 或一般 JVM 指定要使用哪个网络设备的 VM 选项(首选后者)。

我的目的是尽量减少适应服务器设置变化的工作量(我们无法控制)。

显而易见的答案是 - 设置 iptables 以强制一台设备上的所有流量,但我们不能这样做。

下一个答案是 - 在构建传输时指定要使用的网络设备,但不能这样做,因为我们不拥有邮件包,并且需要大量时间对所有应用程序进行回归测试..

任何帮助或尝试的创造性方法(鉴于限制)将不胜感激!

【问题讨论】:

    标签: java smtp jakarta-mail rhel jvm-arguments


    【解决方案1】:

    非常有趣的“问题约束”:) JavaMail 中有一个名为mail.smtp.localaddress 的属性。该值应该是您要绑定的接口的 IP(eth1 的 IP)。 由于它是一个属性,您可以在启动应用程序时使用-Dmail.smtp.localaddress=123.124.123.123进行设置

    Afaik 在 websphere 中有一个“通用 jvm 属性”设置,但我不知道到底是什么

    【讨论】:

    • 感谢您的考虑!已经尝试过了..这促使我在上面进行编辑,因为我指出 java.smpt ....不是 java.smtp :-)
    • 哦-我阅读了您问题中的“本地地址”:-|这个值是否可能被邮件包覆盖,或者它是否改变了 javamail 中的默认套接字工厂?
    • 在何处设置属性取决于 JavaMail 会话的创建方式。如果会话是使用系统属性创建的,您可以如上所述在启动时进行设置。但是,如果使用单独的 Properties 对象创建 Session,则需要在该 Properties 对象中进行设置,这可能需要修改创建 JavaMail Session 的程序。
    • 谢谢比尔 - 我也这么认为,但不幸的是,这是我无法控制的。
    猜你喜欢
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 2021-05-14
    相关资源
    最近更新 更多