LoginSignup
3
2

More than 1 year has passed since last update.

Visual Studio CodeでOpen LibertyサーバーサイドJavaアプリをデバッグする

Last updated at Posted at 2021-09-09

はじめに

これまでフロントエンドはVisual Studio Code、サーバーサイドはEclipseで開発をしていましたが、Eclipseのヒープが結構とられるため、Visual Studio CodeでJavaも開発できるようにしたいと思います。
私の仕事柄、以下の機能が必要となります。

  • Javaでコーディングするだけでなく、ローカルでJava EEアプリをデバッグしたい
  • アプリケーションサーバーとしてOpen Libertyを利用したい

参考

セットアップ

Visual Studio CodeでJavaで開発環境を整えるため、前提として以下のセットアップを行います。

  • Java SDK (JREではないです)
  • maven
  • Visual Studio Code

Visual Studio Codeを立ち上げたら、以下の拡張機能をインストールします。

  • Extention Pack for Java image.png

  • Open Liberty Tools image.png

pom.xmlの変更

webアプリ用のpom.xmlにOpen Liberty Toolsへのbuild依存を追加します。

    <build>
        <plugins>
            <plugin>
                <groupId>io.openliberty.tools</groupId>
                <artifactId>liberty-maven-plugin</artifactId>
                <version>3.4</version>
            </plugin>            
        </plugins>
    </build>

liberty-maven-pluginが追加されているプロジェクトを自動スキャンして、LIBERTY DEV DASHBOARDにそのアプリが表示されます。
スクリーンショット 2021-09-09 13.53.58.png
ワークスペース全ファイルをスキャンしているためか、ここになかなか対象アプリが表示されない場合があります。

server.xmlの用意

Libertyの設定を行うserver.xmlはsrc > main > liberty > config > server.xmlに配置します。こちらのファイルもホットデプロイ対象です。こちらのファイルを編集して、Libertyのfeatureの編集やその他依存ライブラリーを定義します。以下はその一例です。

<server description="new server">
    <!-- Enable features -->
    <featureManager>
        <feature>webProfile-8.0</feature>
        <feature>localConnector-1.0</feature>
    </featureManager>

    <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
    <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>

    <!-- Automatically expand WAR files and EAR files -->
    <applicationManager autoExpand="true"/>

    <!-- Default SSL configuration enables trust for default certificates from the Java runtime --> 
    <ssl id="defaultSSLConfig" trustDefaultCerts="true"/>

    <jdbcDriver id="db2-driver-local" libraryRef="db2-library-local"/>
    <library id="db2-library-local">
        <fileset dir="C:\temp\db" id="db2-fileset-local" includes="db2jcc4.jar"/>
    </library>
    <dataSource id="db2-SQL Database-local" jdbcDriverRef="db2-driver-local" jndiName="jdbc/defaultDS" statementCacheSize="30" transactional="true">
        <properties.db2.jcc databaseName="BLUDB" password="yourPassword" portNumber="50000" serverName="yourServer" translateForBitData="2" user="user"/>
    </dataSource>
    <logging traceFileName="stdout" traceFormat="BASIC" traceSpecification="eclipselink.sql=all"/>
    <applicationMonitor updateTrigger="mbean"/>
</server>

Open Liberyの起動

LIBERTY DEV DASHBOARDの対象アプリを右クリックしてstartを実行します。初回時に、Open Liberyの最新版をダウンロードして自動セットアップされます。
スクリーンショット 2021-09-09 14.07.48.png

起動が完了すると、localhost:9080 にアクセスしてみましょう。ちゃんと自分のwebアプリがローカルで稼働していることが確認できます。

デバッグの実施

VS Codeの「実行とデバッグ」からlanch.jsonによるデバッグ設定を表示し、以下のDebug Liberty部分を追加します。

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "java",
      "name": "Debug Liberty",
      "request": "attach",
      "hostName": "localhost",
      "port": 7777
    },
    {
      "type": "java",
      "name": "Launch Current File",
      "request": "launch",
      "mainClass": "${file}"
    }
  ]
}

左上の実行とデバッグのプルダウンより定義したDebug Libertyを選択し、その左の緑の▷を実行します。
image.png
コールスタック・ビューにLibertyサーバーのJavaのスレッドが見えたら成功です。自分のソースコードの開いて任意の場所にブレークポイントを設定して、アプリを呼び出してみましょう。変数の中身などもちゃんとデバッグモードで確認可能です。

感想

VS Codeがちょっともっさりになりました。デバッグ含めて通常のJava サーバーサイド開発はできそうですが、なんか重いですね。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2