Mavenインストールが失敗するようになった

SpiringBootで作成中のツールにちょっと機能が漏れていたので、pom.xmlにライブラリを追加したところ、ダウンロード出来ませんとの事。

mavenリポジトリから501が応答されているのですが、何か変わったのでしょうか?
試しに、ブラウザ越しに上記のDownload URLをたたくと下記の応答

501 HTTPS Required.
Use https://repo.maven.apache.org/maven2/
More information at https://links.sonatype.com/central/501-https-required

httpsにしなくちゃいけないって事?

ちょっと調べると下記を発見。

今時当たり前なのですが、Mavenリポジトリがhttpsのみに変わったようです。

Mavenツールが古いからかな?とまずeclipse(marsを今でも使用中)から更新の確認を実行してもダメ。
インストールの詳細からm2e Eclipse用Maven統合 を更新してもダメでした。

上記リンクに、pom.xmlで設定するのは例が書かれていますので、有難くこれで一旦解決には出来ますが、プロジェクト個別設定でなくて全体的にどうにかならないの?と、.m2に置いてあるsetting.xmlの設定で対応してみます。

結果、リポジトリ設定ではうまくいかず、ミラーの設定をしてみると、ちゃんとライブラリをダウンロードしてくれるようになりましたが、
初回はミラーから全てのライブラリをダウンロードしようとするようなので、とりあえずはpom.xmlで個別に対応した方がいいかもしれません。

後日、別環境で使っているeclipseで確認したところ、比較的新しいeclipseでは特に問題が無かったようです。どうやら、古いバージョンのeclipseだけ対応出来ないようです。

カテゴリー: Java

redmineでライフログ的記録を取る

 毎年1月になると法人として法定調書を提出する必要があるのですが、年に1回だけのイベントなので、翌年になるとどのように手続きしたかをすっかり忘れて困った事になってしまいます。。
そこで、数年前から後で困らないようにとredmineで備忘録的に記録する事にしました。

今の所、決算期毎にプロジェクト分け、「タスク」という簡単なトラッカーを用意し、期日管理しつつ記録を取っていくという感じです。備忘録が目的なので進捗管理とかは考えていません。

これで、毎回その時が来る度に調べたり考えたりしないでもスムーズに進める事が最近は出来てきたように思います。

で、他にもこういう記録を取っておきたいな、と思ったのが本を読んだ記録です。何を読んで、どうだったかが全く記憶に残せないクチなので、ちょっとしたメモレベルでよいので記録を取る事にしました。

これで、ちょっとは思い出せそうですが、最近たいして読んでないなとも気付かされます。
他にも株式投資をする時にこの銘柄がいいと思ったのは何だったかを検討開始時や購入時に記録しておくとか、ベランダ植物の栽培記録とかもしてましたが、将来的なメリットを感じられないでただ記録しているような内容だとあまり続かないですね。栽培記録は最初だけで止まってます。。

個人的なredmineサイトなら、こんな感じのテーマ事に分類された手動ライフログツールとしても使えるので重宝してます。

w2uiでテーブルメンテナンス画面を作ってみる

SpringBootで作っているアプリに、テーブルメンテナンス画面が必要になったので、w2uiで作ってみる事にしました。


テーブルメンテナンス画面といえば、一覧表示があって、選択したら登録フォームが表示されて、とか基本的な構成はどのテーブルも似たようなものですよね。w2uiのグリッドとフォームを使い、使いまわし出来るようjavascriptに機能を纏め、html側にテーブル固有の個別設定を寄せる事で、いろんなテーブルに対応出来るような形にしていきます。
w2uiのformは、urlを指定するとthis.save()でフォームをPOSTしてくれるようなのですが、ちょっと扱いにくいのでsaveを使わずにjsonでPOSTするようにしました。

eclipse上のリソース構成はこんな感じです。

javascriptです。ちょっと変更後のUIの動きがアバウトではありますが。。

htmlにはjsで定義済の要素とか変数を載せます。メンテ対象のテーブルが増えた場合を考慮しツールバーも入れてます。なお、項目の設定はw2uiのドキュメントを見ながら調整していきますが、結構融通が利きますね。

最後にというか、本来なら最初にですがSpringBoot側は、w2uiの項目名と一致するエンティティクラス(ここではCustomer)と、CrudRepositoryを継承したインターフェースCustomerRepositoryを用意し、RESTコントローラーからアクセスさせるようにします。

で、出来た画面です。

なお、今回セキュリティ要件は考慮していません。。

カテゴリー: Java

msg形式のメールファイルをemlファイルに変換する

 数年前にjavamailで作ったメールを受信した後の業務を自動化するツールを、今でもいろいろ機能追加をしているのですが、機能を追加・変更する時に、利用者から対象のメールをemlで提供してもらってテストしています。
 でも、outlookユーザーはmsgでしか提供出来ませんというので、emlへ変換したいのですが、ネットに転がってるツールを使ってもイマイチ変換できません。。
 なら作ろうと調べた所、javaならjotlmsgというのがあったのですが、日本語が文字化けします。
 結局、apache poiでoutlookのmsgを扱えるようなので、msgファイルを読み込んでemlファイルへ出力するという形にしました。

 実行時の引数を、msgファイルを入れたパス、emlファイルを吐き出すパスで指定します。

 何件かのmsgファイルを試した所、htmlで取れるケースが無かった。。メソッド的にはあるはずなのに。。
 その為、完全にemlファイルで再現出来るというレベルにはなりませんでしたが、本文テキストと添付ファイルはemlファイルに出力できているので、まあここまででよいかと。

カテゴリー: Java

weblogic 12cR2にバージョンアップしたら、commons-vfs2でFTPが失敗する

weblogicバージョンアップに伴うトラブルで前回の続き、JAX-RS周りの問題が解消したと思ったら、別のエラーが発生。
commons-vfs2でftp送信している箇所が動かなくなりました。commons-vfs2では他にファイル取得等も実装してますが、そっちの方は何も問題はありません。
ログは下記のように何が原因か解らない状況。


Caused by: org.apache.commons.vfs2.FileSystemException: Could not copy "/tmp/report/upload.txt" to "ftp://username:***@ftphost/report/upload.txt".
Caused by: org.apache.commons.vfs2.FileSystemException: Could not create folder "ftp://username:***@ftphost/report" because it already exists and is a file.

結果的に、pom.xmlに下記を追加しただけで問題が解消しました。

アプリケーションサーバの機能が多いと、かえって何処が依存しているか解らなくなりがちですね。

weblogic 12cR2にバージョンアップしたらJAX-RSが動かなくなった。

5年前に作ったweblogicで動かしているアプリですが、一部の機能でエラーが出ているとの連絡。よく聞くと、weblogic12cから12cR2にバージョンアップをした後に発生しているとの事。

そりゃ、何かしら影響あるよね。。

どうも、JAX-RSが下記のように2.0に変わったという事で、jerseyも2.Xにしないといけない模様。
https://docs.oracle.com/cd/E92951_01/wls/NOTES/whatsnew.htm

pom.xmlを

から

に変更

web.xmlを

から

に変更して再ビルド、概ね事無きを得ました。

対象のアプリは2,3年何も手を加えていなかったので、依存ライブラリのバージョンアップをするのは止めました。トラブル対応だし、必要以上の事はしない方はよいかと。
JavaEEって、oracleからEclipse Foundationに移管されてJakarta EE 8になってたんですね。知らなかった。。
でも、まだ全く別の問題が発生していて対応中です。。

VS CodeからGitbucketへリモートプッシュする

対応していたredmine独自プラグインのredmine4移行が終わり、また別に独自プラグインを入れて業務システムとして使っているredmine2.5のredmine4移行を始めましたが、前回はeclipseからVSCodeへ途中で変えたので、Git周りについてはeclipseからそのままでVSCodeからコミットもリモートプッシュも問題無く動いてました。

今回、VSCode(+GitLensエクステンション)側でGitリポジトリを作成し、Git: Add Remoteで社内で立ち上げているGitBucketをリモート先として登録し、プッシュしたところうまくいきません。。
なお前回と今回のGitBucketリポジトリは別ですが、privateでユーザー、パスワードの認証が必要な構成は同じです。

リモートURLにユーザーを入れたりいろいろしましたが、認証が出来ずにエラーになってます。eclipseならユーザー認証のダイアログが表示されるのですが、VSCodeではエラーメッセージのダイアログのみ。。

で、いろいろ試行錯誤してたら突然プッシュが成功、何がうまくいったか解らないままでしたが、もしかしたらChromeで認証してGitBucketを開いたのがきっかけかもしれませんがそんな事ってあるのでしょうか。。
もう一度やり直すのも面倒なので、今回は謎のままで。。

何か試行錯誤するときは何でうまくいったかちゃんと解るように手順を踏んでやらないといけませんね。。

Oracleからpostgresへの移行でCREATE SEQUENCEにハマる

OracleDBからpostgresへ移行しているのですが、シーケンスをOracleSQLDeveloperからDDLを生成して、そのままpostgresにCREATE SEQUENCEしたところ、下記エラーでそんなのないよと怒られます。。

test_db=# select * from tran_id
test_db-# ;
ERROR: relation tran_id does not exist

実行したDDLは下記の内容です。

CREATE SEQUENCE “TRAN_ID” MINVALUE 1 MAXVALUE 99999999 INCREMENT BY 1 START WITH 1 CACHE 20 CYCLE ;

権限周りを見直しても何も変わらず、試しに

 CREATE SEQUENCE TRAN_ID MINVALUE 1 MAXVALUE 99999999 INCREMENT BY 1 START WITH 1 CACHE 20 CYCLE ;

を実行したところ、CREATE出来た?普通にSQLでシーケンスが取れた。あれ?

postgresはダブルクォーテーションを付けると付けないでは別ものになるのですね。。

WindowsのRedmineプラグイン開発をVisualStudio Codeに移行してみた

 前にやろうとしていたRedmineのバージョンアップ対応ですが、バージョンが決まり(Redmine2.5.1&Ruby2.0&Rails3.2 → Redmine4.0.4&Ruby2.5&Rails5.2)、インフラ含めスケジュールされたので、ぼちぼち対応に入ろうとした所、Rubyのバージョンを2.0から2.5に変えた影響か、Windowsローカル環境のAptanaStudio3では、実行は出来てもデバッグしようとすると、


と出て動かなくなりました。

 これまで3年くらい、Redmineプラグインの開発用に使っていたAptanaStudio3ですが、原因調査を早々に諦めて、、VSCodeに開発環境を移行する事にしました。
 使っているWindows端末にはRuby系の環境は既にインストール済みなので、Rubyのみ最新にします。

C:¥temp>ruby -v
ruby 2.5.5p157 (2019-03-15 revision 67260) [x64-mingw32]

C:¥temp>rails -v
Rails 5.2.2

 VSCodeを普通にインストールして、既存のAptanaStudio3で対応していたフォルダをワークスペースに追加するだけで、準備が出来ましたが、デバッグ設定が一苦労。。ググるといろいろ情報があり、思いのほか試行錯誤しましたが、こちらが一番参考になりました。デバッグ用のGemをインストールし、設定を試していきます。

 最終的にlaunch.jsonは下記となり、ブレークポイントも止まるようになりました。


 VisualStudio Code ネットの評価に違わずいい感じです。新しいツールを使うのは少し手間が掛かりますが、気分的にもリフレッシュできますね。

Mybatis自動生成SQLからスキーマ名を除外

 既存のWebサービスをマイグレーションしようという事で、Springboot&Mybatis3で実装を開始し、開発端末上のOracleDBに接続してMybatisの自動生成機能を使用してみました。

 かなり便利で、簡単なSQLで済む範囲ならSQLを書く必要が無いようです。が、自動生成されたxmlを見てみると、SQL内のテーブル名にスキーマ名が付加されてしまいます。。
 実際に使用するサーバ上のDBはどんなスキーマ名になるか現段階では解らないし、スキーマ名をカットしてくれる設定が無いか、下記を読み込みます。

http://www.mybatis.org/generator/configreference/table.html

それっぽいのを何個か試して、結果、ignoreQualifiersAtRuntime をつける事でsqlMap.xmlに自動生成されるSQLからスキーマ名が無くなりました。

でも、既存システムはかなり複雑なSQLが多数有り、DB設計はそのままとなると、自動生成の恩恵も一部の限られた範囲になってしまいます。

カテゴリー: Java