1

設定:

プロジェクトの 1 つで Spring-MVC を使用しています。自己署名証明書を使用する必要がある URL にアクセスする必要があります。私はserviceそれを行うために次のコードを使用していますが、すべて正常に動作しています。

TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
    @Override
    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
        return null;
    }

    @Override
    public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
    }

    @Override
    public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
    }
}};

// Install the all-trusting trust manager
try {
    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (GeneralSecurityException e) {
    LOGGER.error(e);
}

問題:

このコードは myserviceにあるため、 this を介して新しいリクエストが行われるたびに実行されますservice。このコードをリクエストごとではなく一度だけ実行する方法はありますか? 実際のコードを含むいくつかのサンプルは非常に高く評価されます。

さらに説明が必要な場合はコメントしてください。

4

2 に答える 2

1

たとえば、このコードを別の Spring Bean の init メソッドに入れると、アプリケーションの起動時に実行されます。

@Component
public class TrustManagerConfigurer {
    @PostConstruct
    public void installTrustManager() { ... }
}

または、 に入れてServletContextListener.contextInitialized()も同じ効果が得られます。

以下も参照してください。

于 2012-07-02T07:51:08.657 に答える