JSPのFormで入力した文字が化けてしまうことが多々ありました。忘れないうちに対応方法をメモ。
チェックする項目は、
くらいですね。
基本的にブラウザは、PostするときもGetするときもサーバが返してきたhtml(つまりJSP)の文字コードでデータを送信するみたいです。つまり、そのWEBアプリケーションがhtmlをEUC-JPで返してくる場合(つまりhtmlの文字コードがEUC-JPの場合)ブラウザが送信するデータもEUC-JPになる、という感じ*1。従って、request.setCharacterEncoding?()するときの文字コードもEUC-JPにする、と。
JBossPortalを使ったときに PortletはShift_JISだったのにPortal自体がUTF-8で画面を返していたのに気づかず、相当悩みました。
最後に、メソッドがPostであるか、Getであるかが重要です。Tomcat5.5から、つまりJBoss4.x系は setCharacterEncoding?メソッドはgetのときはエンコードしない、という仕様になっているため、getするとやっぱり文字化けを起こしてしまいます。解法はこちらTomcatのServletRequest#setCharacterEncoding()問題まとめ
設定ファイルは、
${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>
${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.
通常別サーバの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?でやるって事みたいですね。
jndi.properties でJNDIのURLを指定する。
この記事は
現在のアクセス:16143