仕事の感想エッセイ


会社の1つのプロジェクトは、テスト環境がないので、テストできません.直接正式な環境に置くしかありません.の斉は私に自信があるかどうかを聞いて、私はないと言った...私はどうして保証することができますか.事実も証明しているが,確かに自信がない.初めてオンラインになったのは、月曜日の午前中、readmeファイルを見ていなかったため、SocketClientクラスで使用されているポート番号を変更しなかったため、すべてのリクエストに応答できず、すぐにカスタマーサービス側からフィードバックされたユーザーから苦情を受けました.火曜日の夜10時に2回目のオンラインになって、設備で基本的な操作をテストして、いいですが、2時間もしないうちに、またクレームを受けて、古いバージョンを戻すしかありません.
振り返ってみると、問題点は見つからなかった.わけのわからない間違いしか見えない.うっとうしい.走っているプログラムのコードがgitlabからコピーしたのと同じコードなのか疑わざるを得ません.
私が変更したのは、前のログ管理、すなわちlogger文の書き方を修正することです.それ以外に、私はまたThreadLocalオブジェクトを使って、私は1つの静的なThreadLocalオブジェクトをカプセル化して、set方法とget方法とrelease方法を書きました:
public class ThreadLocalUtils {
    private static ThreadLocal threadLocal = new ThreadLocal();
    public static void setToThreadLocal(String phone){
        threadLocal.set(phone);
    }
    public static String getFromThreadLocal(){
        return threadLocal.get();
    }
    public static void releaseInThreadLocal(){
        threadLocal.remove();
    }
}

その後、サービス層メソッドがidによるredisキャッシュの検索を実行した後、電話番号をsetメソッドでThreadLocalオブジェクトに保存し、controller層で異常が投げ出された場合、catchでgetメソッドで電話番号を取得し、finallyでreleaseメソッドでリソースを解放します.ThreadLocalを使う前にも知っていたことがありますが、大丈夫でしょうか?私は私の毕設作品でこの操作をシミュレートしました.いいです.ThreadLocalオブジェクトはスレッド番号をkeyとしているので、相互に影響しないでしょう.そして、私もリソースを解放しています.
ログには奇妙なことが起こり、BusinessException例外が投げ出されると、最初のlogger文が実行され、後のlogger文は実行されません.
 catch (BusinessException e) {
    OutputObject outputObject = new OutputObject();
    outputObject.error(e);
    logger.error(" BusinessException:" + outputObject);

    // 
    String tipMessage = " uuid "+ input.getUseruuid()
            + ", " + input.getCardNo()
            + ", " + ThreadLocalUtils.getFromThreadLocal()
            + ", 【/xxxx/xxxx】( ) , :" + outputObject.getStatusCode()
            + " , :" + outputObject.getMessage() ;

    SendMessageUtils.sendTextMessage(tipMessage);
    logger.warn("<<

1つ目のlogger文が実行され、2つ目のlogger文が実行されませんでした!!また、釘通知を呼び出すインタフェース方法も有効ではありません.このget操作は異常を投げ出したと結論するしかありません.
ThreadLocalUtils.getFromThreadLocal()

そう説明するしかない.さもないと、後ろのlogger文はどうして実行されませんか?私のsendTextMessageメソッドはtry catchを使用してキャプチャされているので、sendTextMessageメソッドは元凶ではないに違いありません.
しかし私は私のフィクションでもこのThreadLocalクラスを使ってみましたが、似たような操作で、サービス層にセットして、controller層のcatchでgetして、finallyでreleaseしてみましたが、正常に実行できて、釘にもメッセージが届きました!!!これは本当に私を理解できません.
本当に分からないと思って、分からないと思っています.いったいどのコーナーに問題があったのか.とてもまじめでとてもまじめなのは初期版と比較して、今本当にただログの出力を変えただけで、他のものに変えていません.明日またオンラインになって、また問題が発生して、私は本当に本当に本当にどうすればいいか分かりません.気が狂う..