Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jetty,强制webapp使用与服务器lib/jndi中包含的javax.mail不同的javax.mail_Java_Jetty_Jakarta Mail_Jetty 9 - Fatal编程技术网

Jetty,强制webapp使用与服务器lib/jndi中包含的javax.mail不同的javax.mail

Jetty,强制webapp使用与服务器lib/jndi中包含的javax.mail不同的javax.mail,java,jetty,jakarta-mail,jetty-9,Java,Jetty,Jakarta Mail,Jetty 9,我是Jetty的新手,我已经使用Tomcat很多年了,我想知道强制我的webapp使用javax.mail 1.5.5的最佳实践,因为它使用的是javax.mail.glassfish-1.4.1.v20100508020.jar,可以在Jetty 9.3.10的/srv/Jetty/lib/jndi上找到 我认为用我的Web应用程序想要的版本替换那个版本是不安全的,是真的吗 最后,如果最佳实践是更新jar,让它留在原来的位置,那么我是否应该从我的webapp中删除该依赖项,使其在WEB-INF

我是Jetty的新手,我已经使用Tomcat很多年了,我想知道强制我的webapp使用javax.mail 1.5.5的最佳实践,因为它使用的是javax.mail.glassfish-1.4.1.v20100508020.jar,可以在Jetty 9.3.10的/srv/Jetty/lib/jndi上找到

我认为用我的Web应用程序想要的版本替换那个版本是不安全的,是真的吗

最后,如果最佳实践是更新jar,让它留在原来的位置,那么我是否应该从我的webapp中删除该依赖项,使其在WEB-INF/lib中不存在


真的提前谢谢你

我对Jetty不太了解,但是你可以替换jar文件

如果您想使用与应用程序捆绑在一起的JavaMail版本,而不是Jetty安装中的版本,可能有一种方法可以告诉Jetty更喜欢您的版本


请注意,我不知道您为什么要使用1.5.5。

我不太了解Jetty,但您可能只需要替换jar文件

如果您想使用与应用程序捆绑在一起的JavaMail版本,而不是Jetty安装中的版本,可能有一种方法可以告诉Jetty更喜欢您的版本


请注意,我不知道您为什么要使用1.5.5。

据我所知,没有任何机制可以强制jetty这样的servlet容器使用war文件中的捆绑邮件jar

如果您不需要JettyJNDI-mail-feature,只需去掉jar即可

有趣的是,关于tomcat,Java Mail FAQ指出了这一点:

问:如何配置Tomcat以允许我在web中使用JavaMail 应用答:要使用JavaMail运行web应用程序,您可以添加 JavaMail javax.mail.jar文件,如果您没有使用JDK1.6或 更新的JavaBeans激活框架javax.Activation.jar文件 安装Tomcat的目录下的lib目录。 这将导致Tomcat在其类路径中包含这些jar文件 自动地有关详细信息,请参阅Tomcat中的JNDI参考资料操作指南 文档或者,您可以打包mail.jar文件并 web应用程序的lib目录中的activation.jar文件 包(war文件)

所以JavaMail错误地指出,您只需要将它与war文件捆绑在一起

另请参见常见问题解答

如果您在web服务器或应用程序服务器中运行,则可能是 在它的一个目录中提供自己版本的mail.jar。你 应该只有一个版本的mail.jar可供用户使用 应用程序


据我所知,没有任何机制可以强制jetty这样的servlet容器使用war文件中的捆绑邮件jar

如果您不需要JettyJNDI-mail-feature,只需去掉jar即可

有趣的是,关于tomcat,Java Mail FAQ指出了这一点:

问:如何配置Tomcat以允许我在web中使用JavaMail 应用答:要使用JavaMail运行web应用程序,您可以添加 JavaMail javax.mail.jar文件,如果您没有使用JDK1.6或 更新的JavaBeans激活框架javax.Activation.jar文件 安装Tomcat的目录下的lib目录。 这将导致Tomcat在其类路径中包含这些jar文件 自动地有关详细信息,请参阅Tomcat中的JNDI参考资料操作指南 文档或者,您可以打包mail.jar文件并 web应用程序的lib目录中的activation.jar文件 包(war文件)

所以JavaMail错误地指出,您只需要将它与war文件捆绑在一起

另请参见常见问题解答

如果您在web服务器或应用程序服务器中运行,则可能是 在它的一个目录中提供自己版本的mail.jar。你 应该只有一个版本的mail.jar可供用户使用 应用程序


我收到了jetty用户的帮助,撰稿人Jan Bartel告诉我:

我可能会制作一个新的jndi.mod,名为eg-my-jndi.mod 从$JETTY_HOME/modules/jndi.mod复制并放入 $JETTY_基地/模块。然后我会把最后一行改为a 不同的库,例如lib/myjndi。因此,模块将如下所示:

[名称]myjndi

[依赖]服务器

[lib]lib/jetty jndi-${jetty.version}.jar lib/my jndi/*.jar将 javax.mailjars和您需要的任何其他文件都可以放入$JETTY_BASE/lib/my jndi中。 然后,您需要做的就是用java-jar激活它 ../start.jar--addtostart=myjndi,您就完成了。好东西 关于这种方法,它可以移植到 不同版本的码头


此外,它还打开了一个

我收到了jetty用户的帮助,撰稿人Jan Bartel告诉我:

我可能会制作一个新的jndi.mod,名为eg-my-jndi.mod 从$JETTY_HOME/modules/jndi.mod复制并放入 $JETTY_基地/模块。然后我会把最后一行改为a 不同的库,例如lib/myjndi。因此,模块将如下所示:

[名称]myjndi

[依赖]服务器

[lib]lib/jetty jndi-${jetty.version}.jar lib/my jndi/*.jar将 javax.mailjars和您需要的任何其他文件都可以放入$JETTY_BASE/lib/my jndi中。 然后,您需要做的就是用java-jar激活它 ../start.jar--addtostart=myjndi,您就完成了。好东西 关于这种方法,它可以移植到 不同版本的码头


此外,在最新的jetty版本中,有一个较旧版本的javamail捆绑在javax.mail.glassfish-1.4.1.v201005082020.jar中,例如FetchProfile类没有大小字段。。。。我不知道是哪个版本,但我不在乎它,我只是不想使用它。Jetty classloader,从其库中加载javax包,在最新的Jetty re中为它们提供比webapp/lib更高的优先级