当前位置: 首页 > 知识库问答 >
问题:

如果没有提供作用域,为什么Glassfish不会失败,而Tomcat会失败呢?

梁丘权
2023-03-14

我有一个非常简单的Java web应用程序,其中有2个jsp文件(索引和测试)。部署描述符应该提供一些线索:

<web-app... usual stuff here...>

    <servlet>
        <servlet-name>BeerServlet</servlet-name>
        <servlet-class>com.tugay.example.BeerServlet</servlet-class>

    </servlet>

    <servlet-mapping>
        <servlet-name>BeerServlet</servlet-name>
        <url-pattern>/tugay</url-pattern>
    </servlet-mapping>

</web-app>

这个项目是由Maven-WebApp原型创建的,POM中只有一个依赖项:

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>

我在IntelliJ中有两个运行配置,一个用于Tomcat 7.0,一个用于Glassfish 3.1.2.2

当pom如上时,应用程序可以很好地部署到两个服务器上。但当我移除:

<scope>provided</scope>

部署在Tomcat中失败,但在GlassFish中仍然成功。这是为什么?

共有1个答案

谭建章
2023-03-14

provided 在maven中用于告诉服务器将提供这个库(javaee-api)。当您省略时,默认值为 compile 表示所需的JAR在编译期间可用,并与WAR文件一起打包在lib文件夹中。javaee-api包包含javax.servlet、javax.servlet.http。etc,也是由Tomcat提供的。所以当您省略作用域时,jar被打包在WAR文件中,但这个jar也是由tomcat提供的,所以存在jar冲突。Glassfish能够解决这个问题。

 类似资料:
  • 我在让Spark Cassandra连接器在Scala中工作时遇到问题。 我正在使用这些版本: 斯卡拉 2.10.4 火花芯 1.0.2 卡桑德拉-节俭 2.1.0 (我安装的卡桑德拉是 v2.1.0) cassandra-clientutil 2.1.0 卡桑德拉驱动器核心 2.0.4 (推荐用于连接器? 火花-卡桑德拉-连接器 1.0.0 我可以连接并与卡桑德拉(没有火花)交谈,我可以与火花(

  • 我正在处理一个赋值,以获取用户提供的整数并确定它是否是素数。我编写的程序运行良好,我只是不完全明白为什么我需要在每个周期将edx设置为0。

  • 我不知道具体的问题,但重启我的机器后,在Windows10顺便说一句,glassfish就不会再启动了。我的日志 版本=GlassFish Server Open Source Edition 3.1.2.2(build 5)java版本“1.7.0_51”java(TM)SE运行时环境(build 1.7.0_51-B13)java HotSpot(TM)64位服务器VM(build 24.51

  • 我需要替换 我用了 但它抛出异常 java.lang.IllegalArgumentException: Illegal group reference

  • 问题内容: 这是一个挑战:为什么此构建失败? 我已经配置了Maven的maven-war-plugin使其不会在绝对的web.xml文件上失败,这似乎是: 但是尽管有这种配置,它仍然会像这样失败: 我实际上没有web.xml,因此如果没有它,我需要它来组装战争。 我尝试将伪造的东西添加到配置中,但这并没有改变任何东西。 我想念什么? 问题答案: POM中的执行ID为。Maven对打包类型的项目运行

  • 问题内容: 当我使用session_destroy()时,出现“会话对象销毁失败”的消息。 是什么导致此错误? 问题答案: 错误: 警告:session_destroy():会话对象销毁失败 这相当琐碎,没有会话 已启动, 对象已提交,因此您无法销毁它。 该运营商并不总是有效的,例如用错误报告功能。 编辑: 1)导致此错误的原因是什么? 此错误通常是由于PHP尝试删除会话文件而导致的,但找不到它。