Java 在现有web应用程序中部分集成Tapestry

Java 在现有web应用程序中部分集成Tapestry,java,web-applications,tapestry,Java,Web Applications,Tapestry,我有一个只使用servlet和JSP的现有web应用程序 现在我正在用Tapestry 5构建我的web应用程序,但我想知道是否有一种方法可以将Tapestry集成到我的应用程序中的几个URL中 有可能这样做吗?我在Tapestry文档中找不到它 部分解决 好的,到目前为止我就是这么做的。我将Tapestry 5网站中的JAR添加到/WEB-INF/lib文件夹中,还添加了Hibernate验证器和Hibernate ORM的JAR,因为Tomcat抛出了ClassNotFoundErrors

我有一个只使用servlet和JSP的现有web应用程序

现在我正在用Tapestry 5构建我的web应用程序,但我想知道是否有一种方法可以将Tapestry集成到我的应用程序中的几个URL中

有可能这样做吗?我在Tapestry文档中找不到它

部分解决

好的,到目前为止我就是这么做的。我将Tapestry 5网站中的JAR添加到/WEB-INF/lib文件夹中,还添加了Hibernate验证器和Hibernate ORM的JAR,因为Tomcat抛出了ClassNotFoundErrors

我修改了web.xml文件并添加了以下内容:

我认为这就是解决我问题的办法。但是我有一个问题:我现有的web应用程序没有使用Maven进行依赖关系管理。因此,我将Tapestry5下载到WEB-INF文件夹中的lib文件夹中的所有JAR都包括在内。使用以下信息修改了我的web.xml文件:

<context-param>
    <param-name>tapestry.app-package</param-name>
    <param-value>be.blauweregen.ledenplatform</param-value>
</context-param>
<filter>
    <filter-name>app</filter-name>
    <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>app</filter-name>
    <url-pattern>/tapestry5/*</url-pattern>
</filter-mapping>
现在,当我在本地Tomcat 7.0.42服务器上启动Eclipse内部的应用程序时,在Tomcat启动时会出现以下异常:

SEVERE: Exception starting filter app
java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2521)
    at java.lang.Class.privateGetPublicMethods(Class.java:2641)
    at java.lang.Class.getMethods(Class.java:1457)
    at com.zeroturnaround.javarebel.Ce.b(JRebel:461)
    at com.zeroturnaround.javarebel.Ce.a(JRebel:183)
    at com.zeroturnaround.javarebel.Ce.getMethods(JRebel:611)
    at java.lang.Class.getMethods(Class.java)
    at org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl.<init>(DefaultModuleDefImpl.java:115)
    at org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:131)
    at org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:159)
    at org.apache.tapestry5.ioc.IOCUtilities.addModulesInList(IOCUtilities.java:137)
    at org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:107)
    at org.apache.tapestry5.ioc.IOCUtilities.addDefaultModules(IOCUtilities.java:77)
    at org.apache.tapestry5.internal.TapestryAppInitializer.<init>(TapestryAppInitializer.java:124)
    at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:103)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    ... 29 more
严重:启动筛选器应用程序时出现异常
java.lang.NoClassDefFoundError:org/springframework/context/ApplicationContext
位于java.lang.Class.getDeclaredMethods0(本机方法)
位于java.lang.Class.privateGetDeclaredMethods(Class.java:2521)
位于java.lang.Class.privateGetPublicMethods(Class.java:2641)
位于java.lang.Class.getMethods(Class.java:1457)
在com.zerothanound.javarebel.Ce.b(JRebel:461)
在com.zerothanound.javarebel.Ce.a(JRebel:183)
在com.zerothanound.javarebel.Ce.getMethods上(JRebel:611)
位于java.lang.Class.getMethods(Class.java)
位于org.apache.tapestry5.ioc.internal.DefaultModuledAfimpl。(DefaultModuledAfimpl.java:115)
位于org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:131)
位于org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:159)
在org.apache.tapestry5.ioc.IOCUtilities.addModulesInList上(IOCUtilities.java:137)
在org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:107)上
位于org.apache.tapestry5.ioc.IOCUtilities.addDefaultModule(IOCUtilities.java:77)
位于org.apache.tapestry5.internal.TapestryAppInitializer.(TapestryAppInitializer.java:124)
位于org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:103)
位于org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
位于org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
位于org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:107)
位于org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
在java.util.concurrent.FutureTask.run(FutureTask.java:166)中
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:724)
原因:java.lang.ClassNotFoundException:org.springframework.context.ApplicationContext
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
... 还有29个

找不到解决此问题的方法。

一个选项是让tapestry处理根上下文(
/
),然后


另一个选项是

一个选项是让tapestry处理根上下文(
/
),然后


另一个选项是

Tapestry可以轻松地在与当前JSP和servlet相同的应用程序中运行。您只需将
TapestryFilter
映射到需要它的url和/或某些路径


由于Tapestry使用servlet规范,因此HttpSession可以轻松获得会话并在Tapestry和JSP应用程序之间共享信息。你能更具体地解释一下“集成”是什么意思吗?否则,您将得到详细的答案;-)

Tapestry可以轻松地在与当前JSP和servlet相同的应用程序中运行。您只需将
TapestryFilter
映射到需要它的url和/或某些路径


由于Tapestry使用servlet规范,因此HttpSession可以轻松获得会话并在Tapestry和JSP应用程序之间共享信息。你能更具体地解释一下“集成”是什么意思吗?否则,您将得到详细的答案;-)

听起来您是在手动将JAR添加到类路径,而不是使用依赖项管理工具(例如,或)

以这种方式工作非常困难,因为您必须手动确定并添加它们。很容易错过一些

我猜您已经添加了tapestry spring jar,但是忘记了添加spring jar,这导致了您的NoClassDefFoundError


我建议您使用适当的依赖关系管理工具来构建您的webapp。

听起来您是在手动向类路径添加jar,而不是使用依赖关系管理工具(例如,或)

以这种方式工作非常困难,因为您必须手动确定并添加它们。很容易错过一些

我猜您已经添加了tapestry spring jar,但是忘记了添加spring jar,这导致了您的NoClassDefFoundError

我建议您使用适当的依赖关系管理工具来构建您的webappSEVERE: Exception starting filter app java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2521) at java.lang.Class.privateGetPublicMethods(Class.java:2641) at java.lang.Class.getMethods(Class.java:1457) at com.zeroturnaround.javarebel.Ce.b(JRebel:461) at com.zeroturnaround.javarebel.Ce.a(JRebel:183) at com.zeroturnaround.javarebel.Ce.getMethods(JRebel:611) at java.lang.Class.getMethods(Class.java) at org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl.<init>(DefaultModuleDefImpl.java:115) at org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:131) at org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:159) at org.apache.tapestry5.ioc.IOCUtilities.addModulesInList(IOCUtilities.java:137) at org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:107) at org.apache.tapestry5.ioc.IOCUtilities.addDefaultModules(IOCUtilities.java:77) at org.apache.tapestry5.internal.TapestryAppInitializer.<init>(TapestryAppInitializer.java:124) at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:103) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) ... 29 more