史郎異常UnavailableSecurityManagerException

タイトル曲の昨日の異常がプログラムに表示されます。

次のチェックは、セキュリティマネージャ関連の問題を言ってようなものです

それから私は、コードを見ました:

    @Bean(名= "セキュリティマネージャ" 公衆のSecurityManagerのSecurityManager(){ 
        DefaultWebSecurityManagerのSecurityManager = 新しいDefaultWebSecurityManager()。
        // 设置自定义分野。
        securityManager.setRealm(getDatabaseRealm())。
        // 配置记住我
        securityManager.setRememberMeManager(rememberMeManager()); 
        SecurityUtils.setSecurityManager(セキュリティマネージャ)。
        返すのSecurityManagerを。
    }

SecurityUtils.setSecurityManager(SecurityManagerの)この行はコメントアウトされる前
とSecurityUtilsの内部を見ます

パブリック 静的セキュリティマネージャgetSecurityManager()はスローUnavailableSecurityManagerException { 
        セキュリティマネージャセキュリティマネージャ = ThreadContext.getSecurityManagerを();
        もし(セキュリティマネージャ== NULL ){ 
            セキュリティマネージャ = セキュリティマネージャ。
        } 

        場合(セキュリティマネージャ== NULL ){ 
            文字列MSG = "いいえSecurityManagerが呼び出したコードにアクセス可能な、いずれかに結合した" +はThreadContext。クラス .getName()+「またはVM静的シングルトンとして。これは無効なアプリケーションの構成です。」;
            スロー 新しいUnavailableSecurityManagerException(MSG)を、
        } {
             戻りセキュリティマネージャと、
        } 
    }

getSecurityManagerは()これは、例外がスローされます

SecurityManagerのでは異常の消失で始まる行に参加

        SecurityUtils.setSecurityManager(セキュリティマネージャ)。

その後、私は、コードは、私は制御層マルチスレッド処理及び構成にメソッドを追加し変更する前にその理由が表示されるかもしれないと思います。

パッケージcom.tansuo365.test1.config。

輸入org.springframework.context.annotation.Bean;
輸入org.springframework.context.annotation.Configuration。
輸入org.springframework.core.task.TaskExecutor;
輸入org.springframework.scheduling.annotation.EnableAsync;
輸入org.springframework.scheduling.concurrent.ThreadPoolTask​​Executor; 

輸入java.util.concurrent.ThreadPoolExecutor; 

@Configuration @EnableAsync

パブリック クラスAsyncConfig { 

    @Bean 
    公共のTaskExecutorのTaskExecutor(){ 
        ThreadPoolTask​​Executorキュータ = 新しいですThreadPoolTask​​Executor)は(ある;
         // セットスレッドコアの数 
        executor.setCorePoolSize(5 );
         // スレッドの最大数を設定 
        executor.setMaxPoolSize(10 );
         // キュー容量設定 
        executor.setQueueCapacity(20である);
         // セットスレッドアクティブ時間(秒) 
        executor.setKeepAliveSeconds(60 );
         // 設定されているデフォルトのスレッド名 
        executor.setThreadNamePrefix(「danhao-」);
         // セットがポリシー拒否 
        executor.setRejectedExecutionHandler(新しい新しいThreadPoolExecutor.CallerRunsPolicyを());
         // 近くにすべてのタスクの待ち時間の終了前にスレッドプール
        executor.setWaitForTasksToCompleteOnShutdown(真の);
        リターンキュータ。
    } 
}
    @Async 
    @RequestMapping("/ getChukuNumber" 公衆ListenableFutureの<string> genBillCode(文字列型)がスロー例外{
        StringBufferのbillCodeStr=新規のStringBufferを(); 
        billCodeStr.append(chukudanPrefix)。
        billCodeStr.append(DateUtil.getCurrentDateStr())。
        ストリングtodayMaxChukuDanNumber=chukuZongService.getTodayMaxChukuDanNumber()。
        もし(!todayMaxChukuDanNumber =ヌル){
            billCodeStr.append(StringUtil.formatCode(todayMaxChukuDanNumber)); 
        } {
            billCodeStr.append( "0001" ); 
        } 
        戻り 新しい AsyncResultを<> (billCodeStr.toString())。
//         リターンbillCodeStr.toString(); 
    }

あなたはだけでなく、springboot充填注有効にする場合:

// @EnableCaching 
@SpringBootApplication 
@MapperScan(値 = { "com.xxxxxxx.test1.mapper" })
 @EnableAsync // 开启异步任务
パブリック クラスTest1Application { 

    公共 静的 ボイドメイン(文字列[]引数){ 
        SpringApplication.run(Test1Application 。クラス、引数); 
    } 

}

問題の終わり

おすすめ

転載: www.cnblogs.com/ukzq/p/12204121.html