0

私は、かなり長い間取り組んできた Java EE 6 アプリでの XML 処理のイントロスペクションに依存しています。これまでのところ、問題なく機能しています。ただし、プロパティ セッターの名前を変更する必要がありました。問題は、Introspector.getBeanInfo(Class<?>)古いセッターと新しいセッターの両方を検出していることです。

  • JRebelの使用をやめ、
  • 私のMavenリポジトリをパージし、
  • GlassFish を吹き飛ばして新しいものをインストールし、
  • ウェブアプリを再構築しました。

また、イントロスペクターのキャッシュが確実にフラッシュされるようにしました。

public class BeanUtils {
    public static Map<String, Class> propertyTypes(Class beanType) throws Exception {
        HashMap<String, Class> propertyTypes = new HashMap<>();
        for (PropertyDescriptor descriptor : Introspector.getBeanInfo(beanType).getPropertyDescriptors()) {
            propertyTypes.put(descriptor.getName(), descriptor.getPropertyType());
        }
        return propertyTypes;
    }
    // Added this to flush the introspector
    static {
        Introspector.flushCaches();
    }
}

これが私が内省しているクラスです:

public class AdhocUnavailableTimesRequestTag
{
    public AdhocUnavailableTimeRequestTag[] getAdhocUnavailableTimes()
    {
        return adhocUnavailableTimes;
    }

    public void setUnavailableTimes(AdhocUnavailableTimeRequestTag[] adhocUnavailableTimes)
    {
        this.adhocUnavailableTimes = adhocUnavailableTimes;
    }

    private AdhocUnavailableTimeRequestTag[] adhocUnavailableTimes;
}

そして呼び出しBeanUtils.propertyTypes(AdhocUnavailableTimesRequestTag.class)は戻ります:

"adhocUnavailableTimes" => class [LAdhocUnavailableTimeRequestTag;
"class" => java.lang.Class"
"unavailableTimes" => class [LAdhocUnavailableTimeRequestTag;

unavailableTimesイントロスペクターが存在しなくなったときに、イントロスペクターが起動する原因は何ですか? どうすれば修正できますか?

4

1 に答える 1

1

メソッドの名前になりますsetUnavailableTimes。メソッドの名前を に変更して修正しsetAdhocUnavailableTimesます。

于 2013-03-17T19:52:54.957 に答える