カテゴリ: java

Eclipseのコード補完って、こんな具合に
0330
インスタンスのメソッドをリストアップしてくれたりするわけだが、最近こうなったまま何分経っても計算が終らない。
0330b

再起動した直後は正しく動くがその後はまた再発する。
JDKを18にしたせいかな?と思って17.0.2に戻したが相変わらず。
試しに新規に同じバージョンのEclipseを別途インストールしてみたら発生しないので再インストールで解決すると思うのだけれど、何せプロジェクトが多いので、プレアデスだと全プロジェクトの文字コードをMS932にしたり、Ivyを再認識させたり結構面倒臭いのであまりやりたくない…けど週末にやらざるを得ないね。
→eclipse -cleanでも駄目なので再インストールしたら直った。


このエントリーをはてなブックマークに追加 mixiチェック

JDK 11あたりからマジでJDKから削除されたXML→JavaBeanへの変換ライブラリ、JAXB。
普通は標準添付されないなら別の実装をmavenあたりから持ってくるだけでまぁ済むんだけど、これが、パッケージ名の変更が入り、また更に誰得のジグゾーと絡んで結構苦労した記憶が。
ただし、良い事も1つあって、いつのまにか、読み込んだXMLが不正な場合のエラーメッセージが丁寧になっていて、どこが悪いのか一目でわかるようになっていてこれは素晴らしい。
javax.xml.bind.DataBindingException: javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 826; columnNumber: 40; The end-tag for element type "des" must end with a '>' delimiter.]
        at javax.xml.bind.JAXB.unmarshal(JAXB.java:211)
(略)
Caused by: javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 826; columnNumber: 40; The end-tag for element type "des" must end with a '>' delimiter.]
        at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:310)
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:548)
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:234)
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:206)
        at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:261)
        at javax.xml.bind.JAX

このエントリーをはてなブックマークに追加 mixiチェック

 今度のペットネームは「Photon」だそうで。火星だのネオンだの酸素だの光子だの脈絡無いなーと思ったら、アルファベット順に何かカッコよい物体の名前を付けていたそうで成る程。
 インストーラから会社のパソコンに入れたらしばらくして起動しなくなった。これ、前にも起きたな。
 確か、会社パソコンのセキュリティソフトがディスクを巡回して「何かテキストっぽいファイル」があると見境なく暗号化してしまうので起こる。
 なので暗号化対象外のディレクトリにインストールしないといけないのだが、どうもEclipseインストーラを使うと、指定したディレクトリの他のC:\Users\ユーザ名のディレクトリ配下のどこかに何か設定ファイルを作っちゃうんだよな。以前は、インストーラではなくzipを展開する形でインストールしたら解決したんだが、まだ試していない。
 余りに素早く再起不能になったので、4.7とどこが変わったかも良く判らない。既存のPJのビルドを通しただけ。Java 9,10の文法への対応が目玉と聞くが、Java は8の次は11が本番、9,10はスルーが賢明というもの。まぁ自宅では、レンタルVMのメモリが1GBなので当分の間、最後の32bitなJVMたる8だがな。どこかの誰かある程度信用ある団体が、Windows 32bit版の配布をしないものだろうか…。32bitの方が省メモリなので、64bitOS上でも需要はある(ソースは私)。

このエントリーをはてなブックマークに追加 mixiチェック

★本当は、e(fx)clipse を入れるのがベスト
プロジェクトかワークスペースJava CompilerのError/Warningのタブを開き、Forbidden reference(access rule)の設定が「Error」になっているので「Ignore」に変更する。しばしば忘れるのでここに記す。

それにしてもなぜ、JavaFXのクラスはforbiddenなんだろうな。jarを配置しているディレクトリがまずいのか。

このエントリーをはてなブックマークに追加 mixiチェック

 先日、VMのメモリが枯渇してどうにもならので、ActiveMQサーバプロセスを別VM上に切り出してクライアントとの間の通信はREST経由としたんだが、どうもたまに電文が欠落しているような気がして、まぁTwitterへの投稿なので別に良いけど、一応ログを見た。
 やっぱり欠落していた。クライアント側でPOSTが3発目毎に固まっているように見える。HTTPSサーバ側では2発しか受けていない。おそらく、何かFlashとかCommitとか何か終末的処理が抜けているのだろうと思って調べたら
HttpClient - HttpClient Tutorial

method.releaseConnection();

が行われていなかった。

This is a crucial step to keep things flowing. We must tell HttpClient that we are done with the connection and that it can now be reused. Without doing this HttpClient will wait indefinitely for a connection to free up so that it can be reused.

http://hc.apache.org/httpclient-legacy/tutorial.html

とのこと。
こんなものがあったとは。迂闊。毎回1発しか試してなかったから見つからなかったんだな。しかし1発目成功、2発目から固まるなら分かるが、なんで3発目から固まっていたのだろう…。

RESTful Webサービス
RESTful Webサービス
posted with amazlet at 17.10.20
Leonard Richardson Sam Ruby
オライリー・ジャパン
売り上げランキング: 46,783

このエントリーをはてなブックマークに追加 mixiチェック

WebLogicでは可能らしい。やったことないけど。いつも外からHTTPで受けてJMSキューに自分で書いてたからなー。
同一サーバ上ならJMSバインディングでも良い気もする。HTTPって「ポートに穴が空いてることが多い」だけが取り得だし。
9.2のドキュメント
http://otndnld.oracle.co.jp/document/products/wls/docs92/webserv/advanced2.html
11gのドキュメント
http://docs.oracle.com/cd/E21043_01/web.1111/b61634/jmstransport.htm#i225309
Webサービススタートガイド http://docs.oracle.com/cd/E21043_01/web.1111/b61647/toc.htm
んー。BEAの文書もあんまり判りやすくは無かったが、Oracleよりはマシだった…。サンプルも日本語だったし。今より量もあったような。
つかWebLogicは8.1の頃が何かと一番良かったなー。
SOAPって今はドキュメント指向・リテラルなんだっけか?JAX-WSはそれがデフォだったよな、たしか。
久々に

マスタリングJavaEE5 (CD-ROM付) (Programmer’s SELECTION)

マスタリングJavaEE5 (CD-ROM付) (Programmer’s SELECTION)

に頼る時が来たようだ。分厚いんだよなー。JPAJSF要らないから薄くならないかしら。でもこの本は何かと頼りになるので皆さんお勧め。

このエントリーをはてなブックマークに追加 mixiチェック

こういう次第でちょっと検討。
ロリポップでのWebDAVの設定方法はこちら http://lolipop.jp/manual/user/webdav/
JavaWebDAVクライアント記事は以下
http://syo.cocolog-nifty.com/freely/2010/10/javawebdav-8cd5.html
http://syo.cocolog-nifty.com/freely/2010/10/jackrabbitssl-1.html
http://syo.cocolog-nifty.com/freely/2010/10/jackrabbitwebda.html
Javaの良い所は、やろうと思った事は大概誰かが先行してやっていて、あまつさえライブラリ化されサンプルも一杯あること。
…Jack Rabbitでけえー。jarが30MB.
http://www.apache.org/dyn/closer.cgi/jackrabbit/2.2.8/jackrabbit-standalone-2.2.8.jar
でももしや、エクスプローラ側でうまいこと設定すると、自作プログラム側からはファイルコピーな感じでうまく行ったりしないだろうか?FileのAPIだとダメでも、copy コマンド発行ならできそうな気がしないでもない。
→とりあえず上記のソースのコピペでそのまんまファイル名一覧取得はできた。あとは更新時刻取得と、PUTができれば。
http://wiki.apache.org/jackrabbit/WebDAV
この辺に何かあるだろう。

このエントリーをはてなブックマークに追加 mixiチェック

こういう次第でで脱Pythonを推進中。次はXML処理。
JavaでDOM使うとNodeの山になって、目が、目が…。で、「Javaで書くとこんなに長い処理がこのスクリプト言語で書くとこんなに簡潔に」のネタにされる訳だけど、このJDOMを使えばコレクションフレームワークに対応してるのもあって実に簡潔になる訳。これからはワンライナーJavaか。

		Document doc = new SAXBuilder().build(new File(inputFileName));
		Element root = doc.getRootElement();
		Namespace ns = root.getNamespace();
		List<Element> janls = (List<Element>)root.getChildren("janl",ns);
		for(Element janl:janls){
			String janlId = janl.getAttributeValue("id");
			System.out.println("Janl"+janlId);

			List<Element> items = (List<Element>)janl.getChildren("item",ns);
			for(Element item:items){
				String text=item.getAttributeValue("text");
				String type = item.getAttributeValue("type");
				System.out.println(" Item text="+text+" type="+type);

dom4jというものもあるそうだけど、先に出会ったこっちを使った。
まぁこれでPython製ツールは大体移植できそう。ついでだからマルチスレッド化するか。ExecutorServiceが登場してからというもの私でも簡単にマルチスレッドが扱えるようになった。

このエントリーをはてなブックマークに追加 mixiチェック

という訳でPythonが終わったのでPythonでやってた処理をJavaに移植。まぁApache Commons様があればちょろいものよ…子プロセスの標準出力を受けてファイルに出すスレッドを一々準備するのがちょっと面倒だけど。
ただ、既存のXMLの構造を探りながら徐々に作っていく時はやっぱPythonの方が便利なんだよね。
しかしJavaだと随分早いな。子プロセス(シェルコマンド)を起動しては終わりを待ち、起動しては終わりを待ち、を繰り返す代物だからコマンドを起動する側の言語自体のスピードはあんまり影響しないかと思ってたが目に見えて違う。意外。

このエントリーをはてなブックマークに追加 mixiチェック

を早速使いたい場面に遭遇したが、Eclipseが未対応なので使えず。ぬぅ。

このエントリーをはてなブックマークに追加 mixiチェック

↑このページのトップヘ