10

今日、私はこの問題に遭遇しました。これは、ほとんどのコードがすでに機能していたため(そして、古いバージョンに戻した後でも機能しなくなったため)、本当に私を悩ませています。

Facelets-PageでSpring-Beanにアクセスしています。Springは、これらのオブジェクトをプロキシでラップして、アスペクトやその他のものを使用します。

問題は、Beanのプロパティにアクセスしようとすると例外が発生することです。例外は次のようなものです。

javax.el.PropertyNotFoundException: /customers.xhtml @23,27 value="#{customerBean.customer}": Property 'customer' not found on type $Proxy88

私は確かに(!!)それに応じたゲッター/セッターメソッドがそこにあることを知っています。私がこれまでに試したこと:

  • アプリケーションを別のTomcatインストールにデプロイします
  • webapp-directoryであるすべてのtomcat-cachesをクリアします
  • 日食プロジェクトをきれいにする
  • javap(およびそこにあるメソッド/プロパティ)を使用して、対応するメソッドを確認します
  • Beanのスコープを変更します
  • Beanのクラス名を変更します
  • 春のbean-idを変更します
  • BeanのserialVersionUIDを変更します

私が何をするにしても、クラスはどういうわけか正しくラップされていないか、クラスローダーによって正しくロードされていません。

誰かがこのような問題を引き起こす可能性のあるアイデアを持っていますか?さらに何を試してみたらいいのかわからないので、アドバイスをいただければ幸いです!

前もって感謝します!

よろしく、ロバート

4

5 に答える 5

2

OK、AspectJウィービングを使用してメソッドセキュリティを管理する方法を見つけました。

少なくともSpring-security3.0.5を使用する必要があります。少なくとも、spring-security.xmlで適切なスキーマを使用する必要があります:
http://www.springframework.org/schema/security/spring-security-3.0。 5.xsd

依存関係としてspring-security-aspectsを追加する必要があります。

<dependency>
   <groupId>org.springframework.security</groupId>
   <artifactId>spring-security-aspects</artifactId>             
   <version>3.0.5.RELEASE</version>
</dependency>

グローバルメソッドのセキュリティタグに新しい属性「mode」を追加するよりも、次のようになります。

<global-method-security pre-post-annotations="enabled" mode="aspectj"/>

また、標準のSpring-configuration.xmlに、AspectJウィービングを有効にするタグを追加する必要があると思います。

<context:load-time-weaver aspectj-weaving="on"/>

また、aop-proxyタグを削除(削除)するのにも適しています。

<aop:aspectj-autoproxy proxy-target-class="true"/>

また、Spring-security 3.1.0を使用することをお勧めしますが、少なくともSpring3.0.7を使用する必要があります。

お役に立てれば :)

于 2012-01-19T17:16:54.967 に答える
2

また、Tomcat 7、JSF 2、Spring 3、SpringSecurity3も使用しています。同じ問題が発生しました。織りの構成を変更しても役に立ちませんでした。

私の最終的な解決策は、springconfigに1行追加することでした。

<aop:aspectj-autoproxy proxy-target-class="true"/>  

JouはクラスパスにCGLIBが必要です。
これが誰かを助けることを願っています。:)

于 2012-01-17T16:59:48.920 に答える
1

これらのエラーは通常、ロード時間ウィービングが適切に構成されていない場合に発生します。ロード時間ウィーバーを構成するだけでなく、適切なJavaエージェントもロードするか、アプリケーションサーバーがそれを実行することを確認してください。

この環境を構成する方法の詳細については、春のドキュメントを参照してください。たとえば、7.8.4.6章「環境固有の構成」を参照してください。これはAOPの負荷時間の織り方のトピックをカバーしていますが、負荷時間の織り方を必要とするばねの他の部分の構成と同じです。

于 2011-06-30T21:31:10.477 に答える
0

oneToManyフィールドを持つcustomerBeanのドメインを削除してみてください。

于 2011-07-26T00:19:54.490 に答える
0

あなたの豆は実装されていると思いますSerializable。私は今日これに遭遇しました、Serializableはプロキシに奇妙なことをします、私のメソッドのどれもアクセスできませんでした。Serializableを削除すると、機能するはずです。

于 2013-08-09T12:00:01.863 に答える