SSブログ

Zabbixエージェント実行時のファイアウォール [Zabbix]

Zabbixエージェントを立ち上げるのは案外簡単にできるのですが、サーバ側で認識されないことがあります。

一番怪しいのはエージェントマシンのファイアウォール設定です。


[root@hoge ~]#  chkconfig --list | grep ip
ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off


ファイアウォール有効の場合、以下の設定をお忘れなく。

[root@hoge ~]# cat /etc/sysconfig/iptables
 :
-A INPUT -p tcp --dport 10050 -j ACCEPT
 :
設定変更後はiptablesの再起動。
[root@hoge ~]# service iptables restart


WOL 最後の一手 [Windows]

会社PCをサーバのごとく、24時間365日稼働させていたら、ある日のWindowsUpdateで永遠の眠りについてしまった。

ごめんよ、PC。


そこでマザーボードなどを入れ替えた新PCでは、退社時電源を落とすことにした。とはいうものの退社後に急な作業が入ったりすることもあるため、必要に応じて寝た子を起こす必要がある。


そこでWOL(Wakeup On Lan)の設定をした。

大概は世の中の情報で事足りるのだが、最後の詰めで起動できない。以前も同じ設定をしたのにすっかり忘れている。


そういえばネットワークデバイスの設定画面は日本語だったような…

あっ、ドライバを入れ替えるの忘れてた。

というわけでrealtekの最新ドライバをダウンロード&インストール。


設定画面が日本語化され、バージョンも更新された。


driver.PNG


これで無事セットアップ完了。


Listからremoveするための正しい実装 [Java]

JavaでListからremove()する際には、equals()をオーバーライドしないと正しい挙動をしない可能性があるという書き込みを見つけました。


これはひとつの変数に、2回以上newして作成したインスタンス格納した場合に注意すべき内容です。
 Listにデータを詰めるときには、for文の中でよくこのパターンをやりますよね。
そもそもインスタンス作成の考えをきっちり抑えていないと、この過ちを犯すことになります。私も言われてみて、そりゃそうだと膝を叩きました。
一つの変数を使いまわしても、都度インスタンス生成すればどんどん新たな空間が割り当てられるわけです。equals()をオーバーライドしないでのremove()は本当の削除対象と合致しているか、曖昧になっているわけです。

そこで明示的にマッチさせるため。equals()をオーバーライドするわけです。

 

public boolean equals(Object o) {
    if(o instanceof TargetClass) {
        return this.name.equals(((TargetClass)o).name);
    } else {
        return false;
    }
}

 

 案外見逃してそう。


glassfish フォルダ内のファイル一覧表示 [glassfish]

glassfishでフォルダ内のファイル一覧を表示する方法についてです。


config/domin.xml
<configs>
  <config name="server-config">
    <system-property name="JMS_PROVIDER_PORT" description="Port Number that JMS Service will listen for remote clients connection." value="7676"></system-property>
    <http-service>
      <access-log></access-log>
      <virtual-server network-listeners="http-listener-1,http-listener-2" id="server">
        <property name="allowLinking" value="true"></property> ⇒追加

GUIの場合
Configurations⇒server-config⇒Virtual Servers⇒server
Virtual Serversで以下の項目を追加
 Name allowLinking
 Value true



config/default-web.xml
<servlet>
  <servlet-name>default</servlet-name>
  <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
  :
  <init-param>
    <param-name>listings</param-name>
    <param-value>true</param-value>  ⇒ falseをtrueに変更
  </init-param>


これでdocroot下のファイルを参照できます。
 docroot/logs
 http://hogehoge:8080/logs/

別フォルダの場合はシンボリックリンクを使いました。
例:/tmp/docroot/applogsを参照したい場合
 cd docroot
 ln -s /tmp/docroot/applogs ./applogs
 http://hogehoge:8080/applogs/


注意
URLの最後に / をつけないとエラーになります。

 

config/default-web.xmlの情報が見つからなくて苦労しました…


動き出したWindows Updateを強制的に中断する [Windows]

Windows10 Anniversary Updateの配布が始まっていますが、環境によってはいろいろと問題が発生しているようです。

問題解決についてはさておき、走り出したUpdateを中断させる方法です。

管理者としてコマンドプロンプトを起動し、以下のコマンドを実行します。

net stop wuauserv

これでUpdateのサービスは停止します。
停止したら、個別の問題を解決していきます。

glassfish 起動エラー [glassfish]

glassfishを起動しようとしたら「DNS can not resolve the hostname」が発生。


【発生内容】
[root@hogehoge ~]# /opt/glassfish4/glassfish/bin/asadmin start-domain
Bad Network Configuration.  DNS can not resolve the hostname:
java.net.UnknownHostException: hogehoge: hogehoge: unknown error
Waiting for domain1 to start ..............................Error starting domain domain1.
The server exited prematurely with exit code 0.
Before it died, it produced the following output:

 :

重大: Cannot determine host name, will use localhost exclusively
java.net.UnknownHostException: hogehoge: hogehoge: unknown error
        at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
        at com.sun.enterprise.util.net.NetUtils.getCanonicalHostName(NetUtils.java:300)
        at com.sun.enterprise.v3.server.SystemTasksImpl.setSystemPropertiesFromEnv(SystemTasksImpl.java:157)



単なる警告であれば、無視してもglassfishは起動するが、重大エラーだと起動しない。

この場合は、/etc/hostsを編集する必要あり。

【対応方法】
編集前
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

編集後
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 hogehoge
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

ネットワークの再起動を忘れず。
[root@hogehoge ~]# /etc/rc.d/init.d/network restart

別テーブルの値で対象テーブルの値を更新 [Oracle]

テーブルの値を更新する際に、別のテーブルからもってくる。oracleでやってみました。


TABLE_A
KEY_A number(10,0)
KEY_B number(10,0)
COL1 varchar2(10)

TABLE_B
KEY_B number(10,0)
COL1 varchar2(10)

TABLE_AのCOL1にTABLE_BのCOL1の値をセットする。


【誤ったやりかた】
update TABLE_A a
set COL1 = (select b.COL1 from TABLE_A a,TABLE_B b where a.KEY_B=b.KEY_B);

こんなエラーが発生
SQLエラー: ORA-01427: 単一行副問合せにより2つ以上の行が戻されます
01427. 00000 -  "single-row subquery returns more than one row"


副問合せ内のfromに更新対象テーブルを記載してはダメ!
【正しいやり方】
update TABLE_A a
set COL1 = (select b.COL1 from TABLE_B b where a.KEY_B=b.KEY_B);

 

これで解決しました。


ドメインの種類 [サーバ]

社内サーバ環境を外部に委託することとなり、いろいろと調査しています。
調査する過程を忘れないように備忘録として残します。

今回はドメインの移管についてです。

ドメイン移管で発生する費用はドメインの種類によって異なりますので、種類を整理しておきます。

■属性型JPドメイン名
CO.JP(企業)、AC.JP(大学等)など、組織の種別ごとに区別されたドメイン名。
例:sample.co.jp

■汎用JPドメイン名
個人でも組織でも、日本に住所があれば誰でも登録できるJPドメイン名。
漢字やひらがななどを用いた日本語ドメイン名も登録できる。
例:sample.jp、サンプル.jp

■gTLDドメイン名(gTLD: generic TLD)
いわゆる.comなど。
インターネットで使われるトップレベルドメイン(TLD)のうち、全世界の人々にサブドメイン名を取得する権利があるもの。
ICANNが管理を行い、ICANNが認定した世界中のレジストラと呼ばれる業者が割り当て業務を行っている。
詳細はこちら


■都道府県型JPドメイン名
「○○○.kanagawa.jp」、「○○○.東京.jp」のように、全国47都道府県の名称を含むJPドメイン名。
個人でも組織でも、日本に住所があれば誰でも登録できる。漢字やひらがななどを用いた日本語ドメイン名も登録できる。
例:sample.kanagawa.jp、サンプル.東京.jp

primefaces デフォルト・スタイルシートをカスタマイズ [JSF]

primefacesのデフォルト・スタイルシートを無効にして、カスタマイズする。

何も設定しないと、こんな感じでスタイルシートがロードされる。
<link type="text/css" rel="stylesheet" href="/(ルート)/faces/javax.faces.resource/theme.css?ln=primefaces-aristo" />


これをまず無効にするにはweb.xmlに以下の内容を追記する。

<context-param>
  <param-name>primefaces.THEME</param-name>
  <param-value>none</param-value>
</context-param>


あとはprimefacesのjarファイルを解凍して、resources下に必要なものをコピー。
cssを好きなようにカスタマイズする。

xhtmlファイル
<link type="text/css" rel="stylesheet" href="resources/primefaces-aristo/theme.css" />

jarファイルのありかはこちら

Junitでprivateメソッドをてすとする [Java]

JUnitでprivateメソッドをテストしてみた。


テストしたいコード
public class Hoge() {
  private String find(String a, int b) {
      :
    return result;
  }
}

これに対するテストコードはこんな感じ。
Hoge hoge = new Hoge();
Method method = Hoge.class.getDeclaredMethod("find", String.class, int.class);
method.setAccessible(true);
String actual = (String)method.invoke(hoge, "key", 2);

デバッグで追っていくとちゃんとfindが呼び出されている。


しかしこのprivateメソッド内で@EJBのJPAを呼び出しているのでが、ここで例外発生。
java.lang.reflect.InvocationTargetException

調査継続中です。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。