「SE業務」カテゴリーアーカイブ

JavaプログラムのHTTP/HTTPS通信でプロキシを経由させる

IBMのWatson APIをいろいろ試してみたくて、職場のPCでJavaから呼び出しみたが、以下のようなエラーがでてしまった。。。

(うすうす感づいてはいたが。。。)自宅のPCでおなじJavaを動かすとなんの問題もなく動いた。(ちなみに、試したのはDocument Conversionというサービス)

つまり、職場のネットワークからだとつながらないということがわかり、職場はプロキシサーバがあるので、プロキシサーバを通すように以下のJVMのシステムパラメータを設定して動かしたところうまくいった!!

パラメータ 内容
http.proxyHost プロキシサーバのホスト名(HTTP)
http.proxyPort プロキシサーバのポート番号(HTTP)
https.proxyHost  プロキシサーバのホスト名(HTTPS)
https.proxyPort プロキシサーバのポート番号(HTTP)
http.nonProxyHosts プロキシを省略して、直接到達するホストのリスト。各ホストを “|” で区切ることで複数指定可能。

プロキシの指定の方法は2つある。

方法1:ソースコードで指定する


Javaソースの中で直接指定します。

●サンプル

方法2:起動パラメータで指定する


Javaの起動パラメータで直接指定します。

 ●サンプル

もちろん、Eclipseのプロジェクトの”右クリックメニュー” → “実行” > “実行の構成を開く” > “引数タブ” > “VM引数”で指定してもOK。

 


Hyper-Vでディスクを拡張した後、ゲストOSのWindowsに認識させる

Hyper-VのゲストOSにいくつかWindows Server 2008 R2を追加したのですが、ディスク容量が不足してきたので、Hyper-Vのディスク編集ツールで容量を拡張しました。こちらを参考にしました。
http://www.atmarkit.co.jp/ait/articles/0909/18/news119.html

ですが、ゲストOSはそのままでは容量が変わらず、どこにも割り当てられていない空き領域が追加されているだけです。そんな基礎的なことも知らずいろいろ調べた結果、WindowsのDiskPartツールで拡張できました。

① コマンドプロンプトで「diskpart」を入力して起動する。
② DiskPartが起動したら、「list volume」を実行して、割り当て対象のディスクを確認する。
②
③ 拡張するディスクVolumeを選択する。今回はVolume3のCドライブを選択する。
③
④ あとは「extend」と実行すれば、Hyper-Vで追加した空き領域が割り当てられて拡張されます。
④

 

コマンドでなくても出来そうですが、このやり方が一番シンプルかと。。。。

 


HTMLのinput要素でdisabled属性を使用する場合の注意点と対応方法

HTMLのinput要素にdisabled属性をtrueにセットすると、ユーザが値を編集できなくなるだけでなく、値そのものが使用できなくなります。つまり、submitなどのアクションでも値がサーバに送信されなくなります。

編集させたくないだけが要件の場合には、readonly属性を使用すればいいのですが、tabなどでカーソル移動する際に選択できてしまいます。できれば、カーソル移動の対象からも外したかったのでいくつか、対応方法考えました。

disabledの設定例

対応方法①送信したい値をcookieやsessionやhidden項目に退避しておく

こちらは、disabled属性がセットされたinput項目の値をcookie、session、hidden項目などにセットしてなんとかして、サーバに送信する方法です。しかし、この方法はdisabled属性がtrueの項目が決まっている場合に使える方法で、動的にdisabled属性がセットされる要素が変わる場合には使用できない方法です。

対応方法②代わりにreadonly属性を使用する

readonly属性を使用して、cssを用いてdisabledになっているように見せる方法です。こちらもおすすめですが、これだけのためにcssを書くのが嫌だったので、使用しませんでした。

対応方法③送信直前にdisabled属性をfalseに設定する

値を送信する直前にdisabled属性を解除してしまう方法で、私はこの方法を採用しました。他のモジュールへの影響が一番少なかったからです。(笑)
方法は至ってシンプルで、値を送信するボタンのonclickイベントにdisabled属性を解除する関数をセットしただけです。

 

 

今回はユーザがタブ移動で大量の項目を入力する画面で、カーソル移動の対象にしたくなかったのでdisabled属性を使用しました。そんな要件なけれが、readonly属性で十分です(^∇^)