サーブレットと JSP のみを使用する既存の Web アプリケーションがあります。
現在、Tapestry 5 を使用して Web アプリを構築していますが、アプリケーション内のいくつかの URL だけに Tapestry を統合する方法があるかどうか疑問に思っていました。
これを行うことは可能ですか?Tapestry のドキュメントで見つかりません。
一部解決済み
わかりました、それは私がこれまでにやったことです。Tapestry 5 Web サイトの JARS を /WEB-INF/lib フォルダーに追加し、Tomcat が ClassNotFoundErrors をスローしていたため、Hibernate バリデーターと Hibernate ORM の JARS も追加しました。
web.xml ファイルを変更し、これを追加しました。
それが私の問題に対する解決策だと思います。ただし、問題が 1 つあります。既存の Web アプリは、依存関係の管理に Maven を使用していません。そこで、Tapestry5 のダウンロードからすべての JARS を WEB-INF フォルダー内の lib フォルダーに含めました。この情報を使用して 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>
私が理解しているように、ルートパスが /tapestry5 の URL のみが Tapestry によって処理されます。
次に、be.blauweregen.ledenplatform.services
Eclipse 内の src フォルダーにパッケージを追加し、AppModule.java
そのパッケージに次の内容のクラスファイルを追加しました。
package be.blauweregen.ledenplatform.services;
import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.ioc.MappedConfiguration;
import org.apache.tapestry5.ioc.annotations.Contribute;
import org.apache.tapestry5.ioc.services.ApplicationDefaults;
import org.apache.tapestry5.ioc.services.SymbolProvider;
public class AppModule {
@Contribute(SymbolProvider.class)
@ApplicationDefaults
public static void applicationDefaults(MappedConfiguration<String, String> configuration) {
configuration.add(SymbolConstants.APPLICATION_FOLDER, "tapestry5");
}
}
ローカル 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
これを修正する方法を見つけないでください。