【GlassFish】文字化け

#概要

 - View（ブラウザ）上での文字化けについて
 - GlassFishコンソール上での文字化けについて
 
#環境

 - IDE : Eclipse 4.7 Oxygen
 - APサーバ : GlassFish 4.1.1
 - JDK 1.8
 - OS : Windows7
 - [プロジェクトの設定](http://qiita.com/nifram/items/123ec5689da654b365aa#eclipse%E3%81%AE%E8%A8%AD%E5%AE%9A)

#対象読者

 - 文字化けでお困りの方


#対処
概要に記述した２項の文字化けへ施した処置です。

##ブラウザ表示時の文字化け

 - 現象

![ブラウザ文字化けbefore.png](https://qiita-image-store.s3.amazonaws.com/0/190666/4166688c-dca9-be2d-1ff2-315720fcd5a5.png)

テキストボックスに文字列を入力して追加ボタンを押下すると
下の空白に名前が表示されるページを作りたいのですが

ボタンを押下すると

 
![ブラウザ文字化けafter.png](https://qiita-image-store.s3.amazonaws.com/0/190666/e463d039-1dd9-d248-63e8-9f34ba52c487.png)


このように文字化けします。

 - 対処

```glassfish-web.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
    <context-root>/PerfectJavaEE3</context-root>
</glassfish-web-app>
```

に以下の記述を追記します。

` <parameter-encoding default-charset="UTF-8" />`


```glassfish-web.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
    <context-root>/PerfectJavaEE3</context-root>
    <parameter-encoding default-charset="UTF-8" />
</glassfish-web-app>
```

 - 修正結果

![ブラウザ文字化け修正後.png](https://qiita-image-store.s3.amazonaws.com/0/190666/a31a7e97-c1d9-38c7-818d-1f7af4925ec4.png)

##GlassFishコンソール画面の文字化け

 - 現象

コンソール画面が一部文字化けして読み取ることが出来ません。

![グラスフィッシュ文字化け.png](https://qiita-image-store.s3.amazonaws.com/0/190666/a0e73f7c-163e-e343-0f2f-360dcc081fed.png)

 - 対処

GlassFishインストールフォルダ内の`domain.xml`に追記します。

domain.xmlの場所：`...\glassfish4\glassfish\domains\domain1\config\domain.xml`

追記内容：`<jvm-options>-Dfile.encoding=UTF-8</jvm-options>`

追記場所：下記の`<java-config classpath-suffix="" debug-options="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9009" system-classpath="">`
と`</java-config>`の間

```domain.xml
      <java-config classpath-suffix="" debug-options="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9009" system-classpath="">
        <jvm-options>-XX:MaxPermSize=192m</jvm-options>
        <jvm-options>-client</jvm-options>
        <jvm-options>-Djava.awt.headless=true</jvm-options>
        <jvm-options>-Djdk.corba.allowOutputStreamSubclass=true</jvm-options>
        <jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options>
        <jvm-options>-Djavax.management.builder.initial=com.sun.enterprise.v3.admin.AppServerMBeanServerBuilder</jvm-options>
        <jvm-options>-XX:+UnlockDiagnosticVMOptions</jvm-options>
        <jvm-options>-Djava.endorsed.dirs=${com.sun.aas.installRoot}/modules/endorsed${path.separator}${com.sun.aas.installRoot}/lib/endorsed</jvm-options>
        <jvm-options>-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy</jvm-options>
        <jvm-options>-Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf</jvm-options>
        <jvm-options>-Dcom.sun.enterprise.security.httpsOutboundKeyAlias=s1as</jvm-options>
        <jvm-options>-Xmx512m</jvm-options>
        <jvm-options>-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks</jvm-options>
        <jvm-options>-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks</jvm-options>
        <jvm-options>-Djava.ext.dirs=${com.sun.aas.javaRoot}/lib/ext${path.separator}${com.sun.aas.javaRoot}/jre/lib/ext${path.separator}${com.sun.aas.instanceRoot}/lib/ext</jvm-options>
        <jvm-options>-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver</jvm-options>
        <jvm-options>-DANTLR_USE_DIRECT_CLASS_LOADING=true</jvm-options>
        <jvm-options>-Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory</jvm-options>
        <jvm-options>-Dorg.glassfish.additionalOSGiBundlesToStart=org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.gogo.command,org.apache.felix.shell.remote,org.apache.felix.fileinstall</jvm-options>
        <jvm-options>-Dosgi.shell.telnet.port=6666</jvm-options>
        <jvm-options>-Dosgi.shell.telnet.maxconn=1</jvm-options>
        <jvm-options>-Dosgi.shell.telnet.ip=127.0.0.1</jvm-options>
        <jvm-options>-Dgosh.args=--nointeractive</jvm-options>
        <jvm-options>-Dfelix.fileinstall.dir=${com.sun.aas.installRoot}/modules/autostart/</jvm-options>
        <jvm-options>-Dfelix.fileinstall.poll=5000</jvm-options>
        <jvm-options>-Dfelix.fileinstall.log.level=2</jvm-options>
        <jvm-options>-Dfelix.fileinstall.bundles.new.start=true</jvm-options>
        <jvm-options>-Dfelix.fileinstall.bundles.startTransient=true</jvm-options>
        <jvm-options>-Dfelix.fileinstall.disableConfigSave=false</jvm-options>
        <jvm-options>-XX:NewRatio=2</jvm-options>
        <jvm-options>-Dcom.ctc.wstx.returnNullForDefaultNamespace=true</jvm-options>
        <!--追記-->
        <jvm-options>-Dfile.encoding=UTF-8</jvm-options>
      </java-config>
```

 - 修正結果

![グラスフィッシュ文字化け修正後.png](https://qiita-image-store.s3.amazonaws.com/0/190666/63d62031-395f-b4a6-545a-0e39f720a0d9.png)

※注意点として

私の Eclipse + GlassFish の環境下ではdomain.xml内部にデフォルトで２つの`java-config`が存在しました。

 - `<java-config classpath-suffix="" debug-options="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9009" system-classpath="">`

 - `<java-config classpath-suffix="" debug-options="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${JAVA_DEBUGGER_PORT}" system-classpath="">`

後者の`java-config`に追記してもコンソール画面の文字化けは直りませんでした。