Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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
Java web.xml与编程方法_Java_Servlets_Configuration_Jetty_Web.xml - Fatal编程技术网

Java web.xml与编程方法

Java web.xml与编程方法,java,servlets,configuration,jetty,web.xml,Java,Servlets,Configuration,Jetty,Web.xml,在我的servlet容器中添加越来越多的配置(在我的例子中是嵌入式Jetty),我开始怀疑我是否应该将所有内容都放在web.xml中,还是将配置程序化保存在Java代码中 是否有理由选择web.xml而不是编程方法,反之亦然?是否存在安全原因,或者这只是表面现象 对我来说,web.xml似乎更好,因为您使用DSL来完成这项工作,而不是将所有内容都压入代码中。另一方面,我可以在代码中快速查找配置。要使用web.config应用新设置,只需更改配置文件并重新启动应用程序。在代码中保留配置的情况下,您

在我的servlet容器中添加越来越多的配置在我的例子中是嵌入式Jetty),我开始怀疑我是否应该将所有内容都放在web.xml中,还是将配置程序化保存在Java代码中

是否有理由选择web.xml而不是编程方法,反之亦然?是否存在安全原因
,或者这只是表面现象


对我来说,web.xml似乎更好,因为您使用DSL来完成这项工作,而不是将所有内容都压入代码中。另一方面,我可以在代码中快速查找配置。

要使用web.config应用新设置,只需更改配置文件并重新启动应用程序。在代码中保留配置的情况下,您需要重建项目。

这取决于您想要配置的内容和您的便利性

Servlet 3.0允许您以三种不同的方式定义元数据:

web.xml,通常应在此处配置在不同环境中部署时会更改的配置。这些属性包括数据库属性、属性文件、管理员用户属性等

在web.xml中定义的优点是,所有配置都存在于中心位置,易于文档编制等。由于只在一个位置定义,因此在分布式开发过程中很难进行维护。是的,Servlet3.0再次允许web-fragments.xml,您应该为其定义库,该库可以为每个库定义一个描述符

注释,任何可以在开发期间定义但也可以在部署期间重写的内容都被定义为注释

其优点是不需要在部署描述符中进行配置,除非必须重写它。注释可以给出默认值。 缺点是容器必须处理注释的所有类。我不认为这是一个很大的缺点


以编程方式,任何您知道不会更改的配置都可以通过编程方式进行配置优势在于,开发人员确信任何人都不会随时更改配置。

以我的经验,您可以对一些很少更改的配置使用web.xml,例如(如果您使用Jersey):


泽西岛休息服务
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.vogela.jersey.first
1.

(我从中复制这些代码)

如果配置定期更改和更新,编程配置将很好(您可以查看Netflix Archaius)

例如:服务超时、线程池大小或指标跟踪等等。

我也想到了这一点。但是为什么要注意编程方法呢?你说的是哪种配置?实际上,每一种可以完成的配置,目前我只配置servlet映射和约束,比如JAAS。
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
 <!-- Register resources and providers under com.vogella.jersey.first package. -->
<init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>com.vogella.jersey.first</param-value>
</init-param>
<load-on-startup>1</load-on-startup>