// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。

**文字化けに対する対応。 [#i53440eb]
JSPのFormで入力した文字が化けてしまうことが多々ありました。忘れないうちに対応方法をメモ。

チェックする項目は、
-JSPの文字コードは?
-request.setCharacterEncoding()できてる?
-メソッドはPost?get?

くらいですね。

基本的にブラウザは、PostするときもGetするときもサーバが返してきたhtml(つまりJSP)の文字コードでデータを送信するみたいです。つまり、そのWEBアプリケーションがhtmlをEUC-JPで返してくる場合(つまりhtmlの文字コードがEUC-JPの場合)ブラウザが送信するデータもEUC-JPになる、という感じ((だと思う))。従って、request.setCharacterEncoding()するときの文字コードもEUC-JPにする、と。

[[JBossPortalを使ったときに>JBoss/JBoss Portalを使う]] PortletはShift_JISだったのにPortal自体がUTF-8で画面を返していたのに気づかず、相当悩みました。

最後に、メソッドがPostであるか、Getであるかが重要です。Tomcat5.5から、つまりJBoss4.x系は setCharacterEncodingメソッドはgetのときはエンコードしない、という仕様になっているため、getするとやっぱり文字化けを起こしてしまいます。解法はこちら[[TomcatのServletRequest#setCharacterEncoding()問題まとめ:http://d.hatena.ne.jp/hyperash/20040309#1078809879]]




**Topicを設定 [#xb70abc7]
設定ファイルは、
 ${install_root}/server/default/deploy/jms/jbossmq-destinations-service.xml
記述内容は、serverタグの直下に
 <mbean code="org.jboss.mq.server.jmx.Topic"
         name="jboss.mq.destination:service=Topic,name=MyTopic">
    <depends optional-attribute-name="DestinationManager">
         jboss.mq:service=DestinationManager</depends>
  </mbean>

**Queueの設定 [#j52c35f2]
${install_root}/server/default/deploy/jms/jbossmq-destinations-service.xml
に
 <mbean code="org.jboss.mq.server.jmx.Queue"
    name="jboss.mq.destination:service=Queue,name=JMSSampleQ">
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
 </mbean>
を追加。これで、キュー名(実JNDI名という?)はqueue/JMSSampleQとなる。


ENC(Environment Naming Context:環境ネーミング・コンテキスト)ではなく、直接Lookupするには
 (QueueConnectionFactory) con.lookup("queue/JMSSampleQ");
でOK.

**リモートのJMSサーバに接続する。 [#j68dcded]
通常別サーバのEJBをlookupするときはjndi.propertiesなどで
 java.naming.provider.url=jnp://[別のサーバ名]:1099
として他のサーバのJNDIに問い合わせるのですが、JMSをlookupしたらエラーになってました。jboss-web.xmlの設定をいろいろ変えてみたところ、
   <resource-ref>
      <res-ref-name>jms/JMSSampleCF</res-ref-name>
      <jndi-name>ConnectionFactory</jndi-name>
   </resource-ref>
がConnectionFactoryだとOKで、RMIConnectionFactoryはNG、QueueConnectionFactoryなどもNGみたいです。ようするに別サーバの場合はがConnectionFactoryでやるって事みたいですね。

**別サーバのEJBを呼ぶ。 [#q88e0340]
jndi.properties でJNDIのURLを指定する。





----
この記事は
#vote(おもしろかった[3],そうでもない[0])
#vote(おもしろかった[4],そうでもない[0])

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS