Wire Mock で NoClassDefFoundError が発生する

エラー Spring Boot3 で WireMock を導入しようとしたら以下のエラーが出た。 1 2 3 4 5 6 7 8 9 Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/DispatcherType at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:375) at com.github.tomakehurst.wiremock.jetty9.JettyHttpServerFactory.getServerConstructor(JettyHttpServerFactory.java:37) at com.github.tomakehurst.wiremock.jetty9.JettyHttpServerFactory.<clinit>(JettyHttpServerFactory.java:30) at com.github.tomakehurst.wiremock.core.WireMockConfiguration.<init>(WireMockConfiguration.java:94) at com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig(WireMockConfiguration.java:135) at com.github.tomakehurst.wiremock.core.WireMockConfiguration.options(WireMockConfiguration.java:139) at com.github.tomakehurst.wiremock.junit5.WireMockExtension.<clinit>(WireMockExtension.java:40) 対処法 以下を 1 2 3 4 5 6 <dependency> <groupId>com.github.tomakehurst</groupId> <artifactId>wiremock-jre8</artifactId> <version>2.35.0</version> <scope>test</scope> </dependency> に変えた。 1 2 3 4 5 6 <dependency> <groupId>com.github.tomakehurst</groupId> <artifactId>wiremock-jre8-standalone</artifactId> <version>2.35.0</version> <scope>test</scope> </dependency> References

April 5, 2023 · 1 min · Sayaka Nakagawa

Os.detected.classifier を M1 Mac で使用する

はじめに Windows で開発された Spring Boot アプリケーションを起動しようとしても、Maven の pom ファイルでエラーが発生してしまい動かなかったので調査した。 環境 Name Version macOS Monterey(M1 Macbook Pro) 12.1 JetBrains Toolbox App 1.25 IntelliJ IDEA (Ultimate Edition) 2022.2 問題点 以下を M1 Mac で実行しようとすると os.detected.classifier が読み込めない 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.6.1</version> <extensions>true</extensions> <executions> <execution> <goals> <goal>compile</goal> <goal>test-compile</goal> </goals> </execution> </executions> <configuration> <protocArtifact>com....

September 29, 2022 · 1 min · Sayaka Nakagawa

Annotation Processing とは

Annocation Processing とは Java 1.8 から導入されている Pluggable Annotation Processing API を指していて、コンパイル時にアノテーションを処理する仕組みのこと。 コンパイル後に処理されたデータは「.apt_generated」に格納される。 カスタムアノテーションを構成することもできるようで IntelliJ IDEA で行う場合はこちらを参照するとよさそう。 References https://www.baeldung.com/java-annotation-processing-builder こんなチュートリアルもあった

August 26, 2022 · 1 min · Sayaka Nakagawa

Event Hubs Capture でイベントデータをキャプチャする

以前の記事では Event Hubs のクイックスタートにて、Event Hubs と Spring Boot アプリケーションをつなげる方法について調べた。 Event Hubs と Kafka アプリケーションを繋げるにはこちらのクイックスタートを使用すればパラメータを設定するだけで簡単にできた。 ただし Event Hubs のレベルは kafka プロトコルに対応したい場合だと Basic では動かないため、Standard にする必要がある その際に、Event Hubs <-> Kafka アプリケーション間で発生するイベントをキャプチャすることができるようだったので設定してみた。(Azure Blob Storage で行った) なお、操作は IntelliJ 上で行っているが、アプリの実行はターミナルで実施した。 キャプチャが保存されたことを確認する 前提 当該リポジトリを clone 済みであり、適切なパラメータが設定済みであること リポジトリの README.md に記載のある条件をクリアしていること TestProducer を起動する producer のルートディレクトリで以下を実行する 1 2 mvn clean package mvn exec:java -Dexec.mainClass="TestProducer" 起動すると以下のようなログがターミナルに出力される。 デフォルトでは起動時に100メッセージが送られるような設定となっているため、送信が完了した場合は以下のようなログが出力される。 TestConsumer を起動する consumer のルートディレクトリで以下を実行する 1 2 mvn clean package mvn exec:java -Dexec....

August 18, 2022 · 1 min · Sayaka Nakagawa

Spring Boot Application から Azure Event Hubs にアクセスする

Event Hubs とは Azure Event Hubs は、データをある場所から別の場所に転送して更なる処理や分析をするためのストリーミングデータインジェストサービスのこと。なんらかのデータイベントが発生するたびにストリーミング処理を行うことからイベントインジェスターともいう。 イベントインジェスターとは、例えば イベント駆動ドリブン はイベントパブリッシャー・イベントコンシューマーを構成するが、そのイベントを処理するためにイベントパブリッシャーとイベントコンシューマーの間に置かれる。 Event Hubs はフルマネージドの PaaS であるため、Kafka などを用いたい場合におけるクラスター管理・構成などの設計・構築が大幅に軽減される。 今回は Spring Boot アプリケーションから Event Hubs を使用する手順に関してまとめていく。 やってみる リソースを準備する Event Hubs を構築するには 公式のクイックスタート を活用すると良さそう。 ソースコードに関しては、公式が提供している Java を使用して Azure Event Hubs との間でイベントを送受信する (azure-messaging-eventhubs) の手順に沿ってサンプル実装を行う 補足:仕事の Kafka アプリケーションを Java で書いているため今回は Java で試す。 送信イベント用 Maven プロジェクトと受信イベント用 Maven プロジェクトを作成して送受信を試す 以後は 注意点のみ記載しているため詳細な手順は上記チュートリアルを確認すること 送信イベント用 Maven プロジェクトの注意点 Maven で作成した Empty Project の pom.xml に以下を追加する。 1 2 3 4 5 <dependency> <groupId>com....

August 14, 2022 · 1 min · Sayaka Nakagawa