#はじめに
これまでフロントエンドは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を立ち上げたら、以下の拡張機能をインストールします。
#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にそのアプリが表示されます。
ワークスペース全ファイルをスキャンしているためか、ここになかなか対象アプリが表示されない場合があります。
#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の最新版をダウンロードして自動セットアップされます。
起動が完了すると、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を選択し、その左の緑の▷を実行します。
コールスタック・ビューにLibertyサーバーのJavaのスレッドが見えたら成功です。自分のソースコードの開いて任意の場所にブレークポイントを設定して、アプリを呼び出してみましょう。変数の中身などもちゃんとデバッグモードで確認可能です。
#感想
VS Codeがちょっともっさりになりました。デバッグ含めて通常のJava サーバーサイド開発はできそうですが、なんか重いですね。