标签: servlet-container

54
推荐指数
4
解决办法
9万
查看次数

Servlet容器(egTomcat)与NIO框架(例如Grizzly)对于RESTful应用程序?

与使用NIO框架(例如和)来托管JAX-RS RESTful服务相比,使用Servlet容器(例如Apache Tomcat)的优缺点是什么?NettyGrizzly

我将使用Java开发RESTful应用程序.Java具有用于构建RESTful服务的JAX-RS API(JSR 331和JSR 339).正如您在此处所看到的,它有不同的实现方式.所有这些都实现了JAX-RS API,因此在它们之间进行切换应该很容易(至少在理论上).Jersey是参考实现,我现在选择它.

对于客户端部分,我将使用angularJS+ bootstrap(所以只是html/css/js而没有jsp页面).

只是为了记录,我说我PostgreSQL用作我的数据库和EclipseLink我的JPA(ORM).

在这里,我想我只是错过了一个部分,那就是服务器部分(JAX-RS服务的主机).AFAIK我可以使用一个Servlet容器(例如Apache tomcat)或定制服务器(使用NIO framwroks如NettyGrizzly,或也许NIO.2其是JDK 7的一部分)用于这一目的.

但我不知道应该使用哪一个.我认为这两种解决方案之间的利弊有助于我选择一种解决方案.

java rest nio web-application-design servlet-container

17
推荐指数
0
解决办法
3969
查看次数

为什么servletContext.getRealPath在tomcat 8上返回null?

我有以下代码行:

servletContext.getRealPath("resources/images/video_icon.png")
Run Code Online (Sandbox Code Playgroud)

我使用jetty(使用maven插件)运行应用程序这段代码行返回corect值.

当我使用tomcat 8运行应用程序时(在tomcat 7上它可以工作) - 应用程序返回null.

申请结构:

在此输入图像描述

1.怎么解决?
为什么会这样?

java tomcat path servlet-container tomcat8

8
推荐指数
1
解决办法
7426
查看次数

jsp容器vs servlet容器

我正在研究servlet技术,其中我听到了术语servlet容器和jsp容器,我感到困惑,两者是否相同.
jsp页面由jsp容器处理,但servlet由servlet容器处理.
在搜索我在servlet容器中找到的某个站点时,有一个名为page compiler的文件,它在jsp请求到来时将servlet容器转换为jsp contaner.

所以我想知道,实际上转换发生在这两个或两者之间是相同的事情,可以互换使用.

谢谢

servlet-container

5
推荐指数
1
解决办法
7464
查看次数

如何将部署依赖参数传递给 webapp

在我工作的项目中,部署参数——例如存储路径或数据库登录——通常通过参数文件给出,该文件存储在 war 文件中。

我发现这不合适,因为每次为不同的部署(开发与生产,更改执行计算机)打包 webapp 时都需要更改这些值。源代码被版本化,这让它更加麻烦。

有没有更好的选择来传递上面列出的参数?

更好,我的意思是:

  • 实用:易于设置、更改和向他人解释
  • 与战争分离
  • 尽可能独立于 web 容器(如果依赖,我在 prod 中使用 tomcat)

编辑

我选择了@aksappy答案来奖励答案中所做的工作,因为它提供了几种使用标准工具的方法。但是,根据上下文,我可以采用任何其他解决方案:

java tomcat servlets parameter-passing servlet-container

5
推荐指数
1
解决办法
5406
查看次数

谁能解释一下比赛时会发生什么!应用程序部署为战争文件?

Play框架不支持servlet规范,但是在它的部署选项中,可以将整个应用程序打包到war文件中并将其部署到任何servlet容器.

从1.1版开始,play使用netty作为集成的Web服务器.

我想知道在war文件中部署播放应用时会发生什么.

它是否仍然在servlet容器中使用netty并将其包装起来?它有任何明显的性能成本吗?或者它只是加入servlet容器?

deployment tomcat playframework servlet-container

4
推荐指数
1
解决办法
454
查看次数

ServletContext getRealPath方法 - 什么是虚拟路径?

我正在阅读文档,getRealPath(String s)当我阅读本声明时,我感到困惑

返回包含给定虚拟路径的实际路径的String.例如,路径/index.html返回服务器文件系统上的绝对文件路径将由请求提供服务http://host/contextPath/index.html,其中contextPath是此ServletContext的上下文路径.

什么是虚拟路径?假设我在我的部署环境中,当我说getRealPath("index.html")这通常指向WEB-INF目录时?或者getRealPath()是否开始读取根目录(在Web应用程序的文件夹名称内)?

java servlets servlet-container

3
推荐指数
1
解决办法
2万
查看次数

在/ static/*上下文中提供静态资源,同时保持我的servlet处理/*上下文

我的问题很简单.我希望在/static/*上下文中提供静态资源,但是我的特定servlet服务/*上下文.既然/static/*/*它的一个子集不起作用.我的web.xml看起来像这样:

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <display-name>template-guice-jersey-tomcat</display-name>
 <session-config>
     <session-timeout>30</session-timeout>
 </session-config>
 <welcome-file-list>
     <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>

 <!-- set up Google Guice Servlet integration -->
 <filter>
    <filter-name>guiceFilter</filter-name>
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
 </filter>
 <filter-mapping>
    <filter-name>guiceFilter</filter-name>
    <url-pattern>/*</url-pattern>
 </filter-mapping>

 <servlet-mapping>                                                                                                                               
   <servlet-name>default</servlet-name>                                                                                                          
   <url-pattern>/static/*</url-pattern>                                                                                                          
 </servlet-mapping>                                                                                                                              


 <listener>                                                                                                                                      
     <listener-class>de.danbim.templateguicejerseytomcat.GuiceServletConfig</listener-class>                                                     
 </listener>                                                                                                                                     
</web-app>  
Run Code Online (Sandbox Code Playgroud)

tomcat servlets servlet-container

3
推荐指数
1
解决办法
1万
查看次数

我应该在生产中没有servlet容器运行Jenkins,即使用java -jar jenkins.war

我是Java和Java Web应用程序的新手.我试图理解为什么我应该使用像Tomcat这样的Java应用服务器,而不是从命令行运行它.

  • 我是否应该在生产中没有servlet容器运行Jenkins,即使用java -jar jenkins.war
  • Tomcat更适合生产环境吗?
  • 还有其他优点吗?

请告诉我为什么在servlet容器中运行应用程序很重要.

java tomcat jenkins servlet-container

3
推荐指数
1
解决办法
4093
查看次数

WAR共享的容器级版本化库

在一个Java servlet容器中(最好是Tomcat,但是如果这可以在另一个容器中完成,那么这样说)我希望理论上可行的东西.我的问题是,是否存在支持它的工具,以及是否存在哪些工具(或者我应该进一步研究哪些名称).

这是我的问题:在一个servlet容器中,我想运行大量不同的WAR文件.它们共享一些大型公共库(例如Spring).乍一看,我有两个不可接受的选择:

  1. 在每个WAR文件中包含大型库(例如Spring).这是不可接受的,因为它会加载大量的Spring副本,耗尽服务器上的内存.

  2. 将大型库放在容器类路径中.现在所有WAR文件共享一个库实例(好).但这是不可接受的,因为我无法在不升级所有WAR文件的情况下升级Spring版本,并且如此大的改变难以实现.

但理论上,有一种替代方案可行:

  1. 每个版本的大型库放入容器级类路径中.做一些容器级魔术,以便每个WAR文件声明它希望使用哪个版本,并且它将在其类路径中找到它.

"魔术"必须在容器级别完成(我认为),因为这只能通过使用不同的类加载器加载库的每个版本来实现,然后调整每个WAR文件可见的类加载器.

所以,你有没有听说过这样做?如果是这样,怎么样?或者告诉我它叫什么,这样我就可以进一步研究.

java tomcat classloader servlet-container

3
推荐指数
1
解决办法
420
查看次数

jhipster使用什么服务器?

我知道您可以构建一个WAR文件来部署到应用程序服务器,但是在运行主Application类时会创建什么样的服务器?

/**
 * Main method, used to run the application.
 */
public static void main(String[] args) throws UnknownHostException {
    SpringApplication app = new SpringApplication(Application.class);
    SimpleCommandLinePropertySource source = new SimpleCommandLinePropertySource(args);
    addDefaultProfile(app, source);
    Environment env = app.run(args).getEnvironment();
    log.info("Access URLs:\n-----------------------------------------------------\n\t" +
            "Local: \t\thttp://127.0.0.1:{}\n\t" +
            "External: \thttp://{}:{}\n-----------------------------------------------",
        env.getProperty("server.port"),
        InetAddress.getLocalHost().getHostAddress(),
        env.getProperty("server.port"));
}
Run Code Online (Sandbox Code Playgroud)

java servlet-container spring-boot jhipster

2
推荐指数
2
解决办法
2171
查看次数

为什么Tomcat支持Hibernate?

为什么Tomcat支持Hibernate?Hibernate是JPA的实现,但Tomcat不支持Java EE.那么为什么我们可以在Tomcat中使用Hibernate呢?

java java-ee servlet-container

0
推荐指数
1
解决办法
168
查看次数