0

おそらくこれは注意力の欠如の問題です、もしそうなら、私を許してください、しかし私は私が間違っていることを見ることができません、それは私を午後中ずっとかかりました、私はあなたの助けが必要です。

私はJSF+JPA+RichFacesアプリをやっています。それはとても簡単です。JPAプロジェクトを実行してテストし、次にJSFプロジェクトをテストして、すべてが正常に機能していますが、変更を加える前でも、RichFacesjarをWEB-INF/ libフォルダーに貼り付けると、機能していたページが停止しました。 、そして今、間違ったアドレスを入力した場合のように、HTTPステータス404ページが表示されますが、以前と同じアドレスを使用しています。

これが私のweb.xmlです

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Monaco</display-name>

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>server</param-value>
</context-param>

<context-param>
    <param-name>org.richfaces.SKIN</param-name>
    <param-value>blueSky</param-value>
</context-param>

<context-param>
    <param-name>org.richfaces.CONTROL_SKINNING</param-name>
    <param-value>enable</param-value>
</context-param>

<filter> 
    <display-name>RichFaces Filter</display-name> 
    <filter-name>richfaces</filter-name> 
    <filter-class>org.ajax4jsf.Filter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>richfaces</filter-name> 
    <servlet-name>Faces Servlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>
</web-app>

そして私のfaces-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<faces-config
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-facesconfig_1_2.xsd"
version="1.2">

<managed-bean>
    <managed-bean-name>pessoa</managed-bean-name>
    <managed-bean-class>cadastro.Pessoa</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<managed-bean>
    <managed-bean-name>service</managed-bean-name>
    <managed-bean-class>cadastro.PessoaService</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<navigation-rule>
    <display-name>inserir.jsf</display-name>
    <from-view-id>/cadastro/pessoa/inserir.jsp</from-view-id>
    <navigation-case>
        <from-outcome>sucesso</from-outcome>
        <to-view-id>/cadastro/pessoa/listar.jsp</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-outcome>erro</from-outcome>
        <to-view-id>/cadastro/pessoa/erro.jsp</to-view-id>
    </navigation-case>
</navigation-rule>

<navigation-rule>
    <display-name>listar.jsf</display-name>
    <from-view-id>/cadastro/pessoa/listar.jsp</from-view-id>
    <navigation-case>
    <from-outcome>voltar</from-outcome>
    <to-view-id>/cadastro/pessoa/inserir.jsp</to-view-id>
    <redirect/>
    </navigation-case>
        <navigation-case>
        <from-outcome>sucesso</from-outcome>
        <to-view-id>/cadastro/pessoa/listar.jsp</to-view-id>
        <redirect/>
    </navigation-case>
    <navigation-case>
        <from-outcome>erro</from-outcome>
        <to-view-id>/cadastro/pessoa/erro.jsp</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-outcome>editar</from-outcome>
        <to-view-id>/cadastro/pessoa/inserir.jsp</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-outcome>editar</from-outcome>
        <to-view-id>/cadastro/pessoa/inserir.jsp</to-view-id>
    </navigation-case>
</navigation-rule>

<navigation-rule>
    <display-name>erro.jsf</display-name>
    <from-view-id>/cadastro/pessoa/erro.jsp</from-view-id>
    <navigation-case>
        <from-outcome>voltar</from-outcome>
        <to-view-id>/cadastro/pessoa/listar.jsp</to-view-id>
        <redirect/>
    </navigation-case>
</navigation-rule>
</faces-config>

私のJPAプロジェクトは別のプロジェクトであり、正常に機能しているため、このエラーとは関係がないと思います。

私のフォルダ構造は次のようなものです

Monaco/
    WebContent/
        cadastro/
            pessoa/
                erro.jsp
                inserir.jsp
                listar.jsp
                test.jsp
        WEB-INF/
            lib/
                richfaces-api-3.3.2.SR1.jar
                richfaces-impl-3.3.2.SR1.jar
                richfaces-ui-3.3.2.SR1.jar
            faces-config.xml
            web.xml
        index.jsp

URL http:// localhost:8080 / Monaco / faces / cadastro / pessoa / listar.jspは、RichFaces jarの前に機能していましたが、現在は次のようになっています。

HTTP Status 404 - /Monaco/faces/cadastro/pessoa/listar.jsp
--------------------------------------------------------------------------------
type Status report
message /Monaco/faces/cadastro/pessoa/listar.jsp
description The requested resource (/Monaco/faces/cadastro/pessoa/listar.jsp) is not available.
--------------------------------------------------------------------------------
JBoss Web/2.1.2.GA

次のようなURLのバリエーションをたくさん試しました。

これらすべてで同じエラー(何が問題ないか)が表示されますが、RichFacesjarを追加しただけで停止した理由がわかりません...

ありがとうございます!

一部のappserverログ:

16:43:28,879エラー[[/Monaco]]コンテキスト初期化イベントをクラスorg.jboss.web.jsf.integration.config.JBossJSFConfigureListenerのリスナーインスタンスに送信する際に例外が発生しました
javax.faces.FacesException:org.ajax4jsf.renderkit.ChameleonRenderKitFactory
    javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:556)で
    javax.faces.FactoryFinder.getImplementationInstance(FactoryFinder.java:448)で
    javax.faces.FactoryFinder.getFactory(FactoryFinder.java:249)で
    com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:1036)で
    com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:493)で
    com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:381)で
    org.jboss.web.jsf.integration.config.JBossJSFConfigureListener.contextInitialized(JBossJSFConfigureListener.java:69)で
    org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3856)で
    org.apache.catalina.core.StandardContext.start(StandardContext.java:4361)で
    org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:790)で
    org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:770)で
    org.apache.catalina.core.StandardHost.addChild(StandardHost.java:553)で
    sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で
    sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース)で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)で
    java.lang.reflect.Method.invoke(不明なソース)で
    org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:296)で
    org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)で
    org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)で
    org.apache.catalina.core.StandardContext.init(StandardContext.java:5312)で
    sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で
    sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース)で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)で
    java.lang.reflect.Method.invoke(不明なソース)で
    org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:296)で
    org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)で
    org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)で
    org.jboss.web.tomcat.service.TomcatDeployer.performDeployInternal(TomcatDeployer.java:301)で
    org.jboss.web.tomcat.service.TomcatDeployer.performDeploy(TomcatDeployer.java:104)で
    org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:375)で
    org.jboss.web.WebModule.startModule(WebModule.java:83)で
    org.jboss.web.WebModule.startService(WebModule.java:61)で
    org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)で
    org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)で
    sun.reflect.GeneratedMethodAccessor3.invoke(不明なソース)で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)で
    java.lang.reflect.Method.invoke(不明なソース)で
    org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)で
    org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)で
    org.jboss.mx.server.Invocation.invoke(Invocation.java:86)で
    org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)で
    org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)で
    org.jboss.system.ServiceController $ ServiceProxy.invoke(ServiceController.java:978)で
    $ Proxy0.start(不明なソース)で
    org.jboss.system.ServiceController.start(ServiceController.java:417)で
    sun.reflect.GeneratedMethodAccessor9.invoke(不明なソース)で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)で
    java.lang.reflect.Method.invoke(不明なソース)で
    org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)で
    org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)で
    org.jboss.mx.server.Invocation.invoke(Invocation.java:86)で
    org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)で
    org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)で
    org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)で
    $ Proxy44.start(不明なソース)で
    org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:466)で
    sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で
    sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース)で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)で
    java.lang.reflect.Method.invoke(不明なソース)で
    org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)で
    org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)で
    org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)で
    org.jboss.mx.server.Invocation.invoke(Invocation.java:88)で
    org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)で
    org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:97)で
    org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(InterceptorServiceMBeanSupport.java:238)で
    org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:87)で
    org.jboss.deployment.SubDeployerInterceptorSupport $ XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)で
    org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)で
    org.jboss.mx.server.Invocation.invoke(Invocation.java:88)で
    org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)で
    org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)で
    org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)で
    $ Proxy45.start(不明なソース)で
    org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)で
    org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)で
    org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)で
    sun.reflect.GeneratedMethodAccessor21.invoke(不明なソース)で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)で
    java.lang.reflect.Method.invoke(不明なソース)で
    org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)で
    org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)で
    org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)で
    org.jboss.mx.server.Invocation.invoke(Invocation.java:88)で
    org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)で
    org.jboss.mx.server.Invocation.invoke(Invocation.java:88)で
    org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)で
    org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)で
    org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)で
    $ Proxy9.deploy(不明なソース)
    org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)で
    org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)で
    org.jboss.deployment.scanner.AbstractDeploymentScanner $ ScannerThread.doScan(AbstractDeploymentScanner.java:263)で
    org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)で
    org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)で
    org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)で
    sun.reflect.GeneratedMethodAccessor3.invoke(不明なソース)で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)で
    java.lang.reflect.Method.invoke(不明なソース)で
    org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)で
    org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)で
    org.jboss.mx.server.Invocation.invoke(Invocation.java:86)で
    org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)で
    org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)で
    org.jboss.system.ServiceController $ ServiceProxy.invoke(ServiceController.java:978)で
    $ Proxy0.start(不明なソース)で
    org.jboss.system.ServiceController.start(ServiceController.java:417)で
    sun.reflect.GeneratedMethodAccessor9.invoke(不明なソース)で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)で
    java.lang.reflect.Method.invoke(不明なソース)で
    org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)で
    org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)で
    org.jboss.mx.server.Invocation.invoke(Invocation.java:86)で
    org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)で
    org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)で
    org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)で
    $ Proxy4.start(不明なソース)で
    org.jboss.deployment.SARDeployer.start(SARDeployer.java:302)で
    org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)で
    org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)で
    org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)で
    org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:766)で
    sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で
    sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース)で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)で
    java.lang.reflect.Method.invoke(不明なソース)で
    org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)で
    org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)で
    org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)で
    org.jboss.mx.server.Invocation.invoke(Invocation.java:88)で
    org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)で
    org.jboss.mx.server.Invocation.invoke(Invocation.java:88)で
    org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)で
    org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)で
    org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)で
    $ Proxy5.deploy(不明なソース)
    org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)で
    org.jboss.system.server.ServerImpl.start(ServerImpl.java:362)で
    org.jboss.Main.boot(Main.java:200)で
    org.jboss.Main $ 1.run(Main.java:508)で
    java.lang.Thread.run(不明なソース)で
原因:java.lang.reflect.InvocationTargetException
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(ネイティブメソッド)で
    sun.reflect.NativeConstructorAccessorImpl.newInstance(不明なソース)で
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(不明なソース)で
    java.lang.reflect.Constructor.newInstance(不明なソース)で
    javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:549)で
    ...141もっと
原因:java.lang.NoClassDefFoundError:org / apache / commons / digester / Digester
    org.ajax4jsf.resource.ResourceBuilderImpl.registerConfig(ResourceBuilderImpl.java:169)で
    org.ajax4jsf.resource.ResourceBuilderImpl.registerResources(ResourceBuilderImpl.java:153)で
    org.ajax4jsf.resource.ResourceBuilderImpl.init(ResourceBuilderImpl.java:224)で
    org.ajax4jsf.renderkit.ChameleonRenderKitFactoryで。(ChameleonRenderKitFactory.java:62)
    ...146詳細
原因:java.lang.ClassNotFoundException:org.apache.commons.digester.Digester
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)で
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)で
    java.lang.ClassLoader.loadClassInternal(不明なソース)で
    ...さらに150
16:43:28,879エラー[StandardContext]エラーlistenerStart
16:43:28,879エラー[StandardContext]コンテキスト[/Monaco]の起動が以前のエラーのために失敗しました

じゃあ。

4

2 に答える 2

2

/facesWebコンテンツファイルをルートフォルダに配置する必要があります。これは、URLにあるのとまったく同じパスです。

もう1つの方法は、のをに置き換えてurl-pattern、パスなしでそれらを呼び出すことができるようにすることです/faces/*。次に例を示します。ちなみに、実際のファイルの名前をに変更する必要はありませ*.jsf/faceshttp://localhost:8080/Monaco/cadastro/pessoa/listar.jsf.jsp.jsf

JSPファイルへの直接アクセスを防止したい場合(そうでない場合は、.jspファイルを要求してに直面するRuntimeException: FacesContext not found可能性があります)、ファイル(フォルダー構造を含む)をフォルダーに移動するのが最適ですWEB-INF

お役に立てれば。

編集: appserverログを追加しました。最初の問題の根本的な原因は次のとおりです。

java.lang.ClassNotFoundException: org.apache.commons.digester.Digester

これはかなり自明です。言及されたクラスがランタイムクラスパスにありません。パッケージ名がすでに示唆しているように、 http: //commons.apache.org/digesterで入手できるのはApacheCommonsDigesterです。ランタイムクラスパス(WEB-INF/lib)に入れて再起動します。後続のエラーが消えるかどうかを確認します(同じ問題によって間接的に引き起こされる可能性があります)。そうでない場合は、戻って質問のスタックトレースを編集します(忘れずに選択してコードボタン(0101011010)を押すか、Ctrl+を押してくださいK)。

于 2009-12-07T23:30:50.773 に答える
0

JBossのログを見ると、RichFacesが機能するために依存しているいくつかのapacheクラス(Apache DigesterとBeanUtils)が欠落していることがわかりました。そのため、ページの提供が停止しました。間違っていたのはURLではなく、起動エラーです。 jboss、eclipse、jpa、richfacesの各ドキュメントが私に言ったことを1行ずつ段階的に行ったので、誰かがそのパッケージが必要だと言うのを見逃しました。これはRichFacesのせいだと思います。はじめに、apacheからいくつかの追加パッケージが必要になるというドキュメント。とにかく、答えてくれたすべてに感謝します、私はあなたが助けてくれて本当に感謝しています!

于 2009-12-08T18:36:37.613 に答える