Javaアプリケーションサーバの歴史はそれなりに長いですが、残念ながら運用時のトラブルは後を絶ちません。 トラブルを起こしにくい・起きても解決しやすくするにはどうすべきか、これだけは押さえておきたい構築・運用時のポイントを紹介します。

こちらのスライドは以下のサイトにて閲覧いただけます。 https://www.docswell.com/s/ockeghem/ZM6VNK-phpconf2021-spa-security シングルページアプリケーション(SPA)において、セッションIDやトークンの格納場所はCookieあるいはlocalStorageのいずれが良いのかなど、セキュリティ上の課題がネット上で議論されていますが、残念ながら間違った前提に基づくものが多いようです。このトークでは、SPAのセキュリティを構成する基礎技術を説明した後、著名なフレームワークな状況とエンジニアの技術理解の現状を踏まえ、SPAセキュリティの現実的な方法について説明します。 動画はこちら https://www.youtube.com/watch?v=pc57hw6haXk
JJUG CCC 2014 Spring に行ってきました! 最初はフルに参加すると時間が長くてしんどいかなーと思ったんですが、そんなのが気にならないぐらい感覚的に短い一日でした。 ブログや本で読むよりも濃くて新しい話が聞けてとても楽しかったです。 (個人的に、JVM関係の話が面白かったです!) 残念ながら、時間がかぶってしまって参加できなかったセッションもあったので、あとで読むために現時点で発表者の方が公開されている資料一覧をまとめしました。*1 (あとで JJUG CCC 2014 Spring のページにもリンクが載ると思うんですが、とりあえず自分の方で調べました) 基調講演 K-1 詳説 Java SE 8 – CCC Edition / 櫻庭 祐一 (Java in the Box) 詳説 Java SE 8 - CCC Edition - K-2 Java 8 ラムダ式と St
はじめに 筆者は10年以上ウェブアプリケーション開発を主な業務とするJavaプログラマであったにも関わらず、Strutsについてはこれまでずっと食わず嫌いでした。初期のStrutsは「XMLだらけで効率が悪そう」というイメージが強かったためです。最近はRuby on Rails等の影響を受けCoC(convention over configuration)を採り入れ、XML地獄もだいぶ解消したようです。 StrutsはJavaアプリケーションらしくない種類(任意のコード実行等)の脆弱性を連発することでも知られており、最近は我々の提供するSaaS型WAFサービス、Scutum(スキュータム)のお客様からも頻繁にStrutsについての問い合わせを受けるようになりました。また、去年見つかった任意のコード実行の脆弱性では、脆弱性の公表後すぐにPoCが出回り実際に攻撃が発生するなど、悪い意味で注目
JVM Operation Casual Talksで出てた話としてJavaでhot deployってどうしてんの?ってのがありました。 hot deployっていうのはアプリケーションコードを変更してもAPサーバーを再起動せずに反映する技術です。 この辺別に僕は全然知らないし答えを持っているわけではないですが、まあちょっと興味があったのでLL言語でのhot deployとJavaでhot deployを簡単に調べたのでメモっときます。 コードを変更してAPサーバーを再起動する場合、APサーバーが止まっているときにアクセスが行くと困るので、ロードバランサから外してAPサーバーを再起動してまた戻すみたいなことをやるのがオーソドックスな方法のようですが、hot deployだとそういったことをやる必要が無くなります。 Server::Starterから学ぶhot deployの仕組み - $s
なんとなく、時々ちょっとしたテストとかで使っているダミーのHTTPサーバ用のスクリプトをまとめたくなりまして。 で、せっかくなのでプラスアルファも入れて。 ホントに簡単なものなので、以下のスペックで。 リクエストの内容を解析することは、必須としない 起動時にはポート番号を指定できる。しなかった場合は、8080で起動 ヘッダ、ボディに何か出力する サーバの終了は、Ctrl-cなどで できれば並行処理可能に ターゲットは、GroovyとClojureでJDK付属のものを使った版、Undertowを使った版を、あとはPerlで1本書きました。 実行結果は、いずれもこんな感じになります。 $ curl -i http://localhost:8080/test HTTP/1.1 200 OK Date: Sat, 12 Apr 2014 08:46:39 GMT Content-type: tex
安価でプログラミングをするスレより。このスレは1さんと2さんが主に会話をしています。Javaについての会話がとても有意義だったのでまとめてみました。挫折ポイントとして名高いオブジェクト指向も、このようにエヴァで例えるとすんなりと理解できそう! 1さんが2さんにJavaを教えるところからスタートします。 ちなみにけっこう長めのまとめ。Javaに興味ある人、Javaをお勉強中の人は何度か読み返すといいかもしれません(*・ω・*) 110: 1◆NaUNjCMHzs 2014/04/05(土)01:07:13 ID:n6jvIZNZZ どこまでできる? 111: 2◆DTn7LrZ..DaI 2014/04/05(土)01:08:06 ID:XKWkZFm7A 何をだい?? 112: 1◆NaUNjCMHzs 2014/04/05(土)01:08:29 ID:n6jvIZNZZ java 113
文字列の配列やリストを[〜]で囲ってカンマで区切って連結するという話、String.joinだとどう?とwatermintさんから指摘があったので、試してみました。 シンプル! public static String stringJoin(){ return "[" + String.join("],[", strarray) + "]"; } でも、1847msでした。改めて前後の文字を文字列連結してるところで時間かかってる感じ。 で、昨日のStringBuilder版はもう少し最適化できるので書き直します。 public static String stringBuilderJoin(){ StringBuilder s = new StringBuilder("["); for(int i = 0; i < strarray.length; ++i){ if(i != 0){ s.
※ 4/9 11:25 いろいろ計測しなおしてます。こちらも参照 Javaで文字列連結する場合には+演算子よりもStringBuilderを使うべき、という話があるのですが、よく sb.append("[" + data + "]"); みたいなコードをみかけて、あんまり意味ないなーと思ったりします。 あと、 sb.append("title:"); sb.append("[" + data + "]"); みたいに、+演算子を使った一行の式にして sb = "title:" + "[" + data + "]"; としておけば「title:」と「[」はコンパイル時点で最適化されたのに、ってコードもあります。 ということでTwitterで Javaでの文字列連結は+を使うべき、ってやったほうが、StringBuilder使ったsb.append("[" + data + "]")みたいなク
4/7に、LINEさんのオフィスで開催された「JVM Operation Casual Talks」。 一部で、Cassandra Casualだったのではないかという疑惑もありましたが、なかなかためになる話が多くて、あとできっと資料を見たくなる日が来そうなので、ちょっとまとめておこうと思う。 こちらもあわせて読みたい JVM Operation Casual Talks #jvmcasual - Togetter Understanding Memory Management of JavaVM in 15 minutes (@stanakaさん) https://speakerdeck.com/stanaka/understanding-memory-management-of-javavm-in-15-minutes @stanakaさん、どこでJVM使ってるのかと思ったら、今日は
こんにちは、andoです。 ついにJava8がリリースされたのでさっそくインストールしてみました。 Java8になってラムダ式を始め、多くの機能が追加されたのですが、既存機能についても性能改善が行われています。 人気がありそうな新機能の紹介は他の人にお任せして、今回はHashMapの変更点について確認したいと思います。 はたして既存のプログラムはJava8で実行するだけで、その恩恵を享受できるのでしょうか。 java.util.HashMap HashMapといえば使用頻度1、2を争うコレクションクラスでデータの検索、追加がO(1)で行え、 辞書的に使える事から簡易的なDTOやキャッシュ、データベースのレコード構造、さらにはListですむところでさえ数値をキーにして使う兵もいるというくらい良くも悪くも色々使えます。 それが速くなるのであれば、既存のプログラムも速くなるはず、ということでさっ
以前の記事でトラブルが起きた後の初動対応を書いてみたが、いざトラブルに遭遇すると、まず再起動してからどうするか考えるケースが多いと感じている。しかし何も情報がないと『情報がない/再現方法が不明』などの理由からそのままお蔵入りになってしまう。今回はトラブルに事前に備えるために、地味だけど大切なJavaVMのオプションをまとめてみる。 GCログの出力とローテーション OutOfMemoryError発生時のヒープダンプ自動出力と出力パス設定 JavaVMクラッシュログの出力パス設定 JVMオプションの設定 (OpenJDK/OracleJDK) JavaVMにはGCおよびヒープメモリの状態をロギングする仕組みや、OufOfMemoryError時にヒープダンプを自動的に出力するような障害に備えて自動的に情報を出力する機能がある。おすすめのオプション*1は以下の通り。 java -Xms?g -
SINAVI J-Frameworkは、Java EE に対応したWebアプリケーションフレームワークで、 高い汎用性が要求されるスクラッチ開発向けのCTC標準のフレームワークです。 これまでCTCの開発現場で発生した問題に対する解決策やシステム基盤に必要な共通機能がフィードバックされているので、 技術リスクを低減し、高い信頼性を実現しています。 構成 SINAVI J-Frameworkは構成技術リスクの低減や品質の確保を目的とし、 業界でデファクト・スタンダードとして広く利用されている以下のオープンソースをベースに構成しています。 Spring Framework(DI×AOP) Spring MVC Jersey MyBatis Spring AMQP RabbitMQ Spring Data MongoDB 再利用性の高い基盤機能やユーティリティを独自拡張することで、生産性と品質の
今回から、具体的なJava SE 8の新機能について紹介していきます。はじめに紹介するのは、やはりJava SE 8の機能の中で最も注目されているProject Lambdaです。 とはいっても、Project Lambdaで策定している仕様を1回で紹介するには範囲が広過ぎます。そこで、今回はProject Lambdaの中で、最も基本的な部分であるラムダ式を中心に紹介していきます。 Project Lambdaの成り立ち 前回、紹介したようにJava SE 7のリリースが遅れた要因の1つに、Project Lambdaがあります。 Project Lambdaの成り立ちについては、本連載の2010年3月の「クロージャからProject Lambdaへ」で言及しました。しかし、それから随分時間が経ってしまいましたし、その後もやはり紆余曲折あったので、改めてここでまとめてみましょう。 Pro
バッチ処理などスループット重視のアプリケーションはデフォルトのパラレルGCで良いが、Java EEアプリケーションサーバなどレスポンスタイム重視のものやHadoopなどのクラスタ系ソフトウェアで死活監視に引っ掛る系などのstop the worldをなるべく避けたいいわゆるサーバ系ソフトウェアを運用する場合には、UseConcMarkSweepGCを付与して停止時間の短いCMS GCを使う。その場合にCMSのチューニングに踏み込もうとするとなんだか難しい記述がいっぱいで若干困るので、簡単なガイドをメモとして書いておく。 対象バージョンは以下。 $ java -version java version "1.7.0_51" OpenJDK Runtime Environment (fedora-2.4.5.1.fc20-x86_64 u51-b31) OpenJDK 64-Bit Serve
1 ニュース OpenJDK8系の 8u262 以降の版とともに使用しないでください (2020/7/24) OpenJDK 8u262 は、素晴らしいことに、いくつかのディストリビューションで JDK Flight Recorder (JFR) が同梱されました。 しかし、残念なことに、HeapStats は 8u262 以降ではうまく動作しません。 8u262 以降でのJavaヒープの確認には、JFRの使用をお勧めします。 詳しくは、このページの下の実行環境セクションをご参照ください。 こちらもまたご覧ください。 http://icedtea.classpath.org/pipermail/heapstats/2020-July/002457.html {Exit|Crash}OnOutOfMemoryError を HeapStats と共に使わないでください(2019/7/25)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く