Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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
“如何部署和调试”;Web片段项目“;在eclipse(WTP)中,服务器运行;“已关闭”;战争档案_Eclipse_Tomcat7_Servlet 3.0_Eclipse Wtp_Web Fragment - Fatal编程技术网

“如何部署和调试”;Web片段项目“;在eclipse(WTP)中,服务器运行;“已关闭”;战争档案

“如何部署和调试”;Web片段项目“;在eclipse(WTP)中,服务器运行;“已关闭”;战争档案,eclipse,tomcat7,servlet-3.0,eclipse-wtp,web-fragment,Eclipse,Tomcat7,Servlet 3.0,Eclipse Wtp,Web Fragment,在我的开发团队中,我们有框架和业务开发人员 该框架已经是一个JEE6WebApp,业务开发人员使用该框架通过该框架提供的web界面构建他们的web页面,并在对业务服务的调用中起到中介作用 每个业务应用程序都构建为一个外部JAR文件,该文件添加到tomcat开始类路径中。此外,它们是eclipse中的“Web片段项目”(WFP),因为还可以添加自定义JSP、HTML、CSS等等,其中一些还使用Web-Fragment.xml 到目前为止,一切都很好,在eclipse之外 在eclipse中,使用W

在我的开发团队中,我们有框架和业务开发人员

该框架已经是一个JEE6WebApp,业务开发人员使用该框架通过该框架提供的web界面构建他们的web页面,并在对业务服务的调用中起到中介作用

每个业务应用程序都构建为一个外部JAR文件,该文件添加到tomcat开始类路径中。此外,它们是eclipse中的“Web片段项目”(WFP),因为还可以添加自定义JSP、HTML、CSS等等,其中一些还使用Web-Fragment.xml

到目前为止,一切都很好,在eclipse之外

在eclipse中,使用WFP和框架作为“动态Web项目”(DWP),一切又恢复正常了

但对于业务开发人员,我希望在eclipse中创建Tomcat服务器,并将其直接指向WAR,使其一起部署WFP

我曾多次尝试将WFP添加到.launch文件中的类路径中,还尝试在tomcat“VirtualWebappLoader”中添加bin dir,但无法读取web-fragment.xml

关于如何实现它有什么线索吗


Ps:在eclipse外部运行tomcat并远程调试WFP不是一个选项。

这是一个旧线程,似乎我是唯一一个出现这种情况的人,但我仍然想分享答案

  • WFP现在是Maven项目,构建输出转到/target/classes

  • 文件系统中有一个指向WAR文件的普通wtp工具web容器(tomcat)

  • 解决方案:我一直使用VirtualWebappLoader,并为JarScanner添加了一个新标志,如下所示:



  • 更新

    使用Tomcat8的人会注意到VirtualWebappLoader不再存在。因此,请看一看。它已经被Pre、Jar和Post资源所取代

    但是,我没有找到一种合适的方法,按照Servlet 3.0规范的要求,将一个包含META-INF/resources和META-INF/web-FRAGENT.xml的分解Jar加载到web-INF/lib中。

    使用Tomcat文档中建议的示例并将Jar目录映射到WEB-INF/classes时,一切似乎都“正常”,但META-INF/resources和WEB-fragment.xml声明的元素不可用:

    <Resources>
      <PreResources
        className="org.apache.catalina.webresources.DirResourceSet"
        base="/home/reginaldosantos/apptest/target/classes"
        webAppMount="/WEB-INF/classes"
      /> 
    </Resources>
    
    
    
    然后,将webAppMount更改为“/WEB-INF/lib”会在启动时给我一些ClassNotFoundException

    最后,经过几次尝试,我想出了一个解决办法:

    <Resources>
      <PreResources
        className="org.apache.catalina.webresources.DirResourceSet"
        base="/home/reginaldosantos/apptest/target/classes"
        webAppMount="/WEB-INF/classes"
      />
      <JarResources
        className="org.apache.catalina.webresources.DirResourceSet" 
        base="/home/reginaldosantos/apptest/target/classes/META-INF/resources"
        webAppMount="/"
      /> 
    </Resources>
    
    
    
    不过我不太确定


    希望它能帮助一些人;-)

    您知道如何将相同的配置迁移到Tomcat 8吗?他们删除了VirtualWebappLoader。@matteosilv是的,绝对!看一看。它已被Pre和Post资源所取代:
    谢谢。您确定这样部署了eventuali web-fragment.xml吗?很抱歉@matteosilv。最初我只是回答了如何替换VirtualWebappLoader。事实上,很难为这种罕见的场景构建一些等效的配置。希望你现在对答案满意。也许,对于“WFP”来说,最好的方法是确保它们是web项目的依赖项,这样它们就可以在web-INF/lib中使用,而不会受到任何攻击。