文字化けに対する対応。 †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()問題まとめ Topicを設定 †設定ファイルは、 ${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の設定 †${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サーバに接続する。 †通常別サーバの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を呼ぶ。 †jndi.properties でJNDIのURLを指定する。 この記事は 現在のアクセス:16506 |