質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Maven 2

Apache Mavenは、ソフトウェアプロジェクトの管理ツールです。

解決済

MavenでビルドしたjarがJavaセキュリティによりブロックされてしまう

masaya_ohashi
masaya_ohashi

総合スコア9198

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Maven 2

Apache Mavenは、ソフトウェアプロジェクトの管理ツールです。

1回答

2グッド

3クリップ

4037閲覧

投稿2016/06/01 08:40

編集2016/06/02 07:31

###前提・実現したいこと
JavaのWebServiceを使用して、サーバ・クライアントのアプリケーションを作成しております。
開発中であるため、署名には自己証明書を使用したいと考えております。
NetBeans上ではサーバもクライアントも正常動作します。
ところが、Mavenでビルドし、署名したjarファイルを実際にLAN上のサーバに配置すると、
Javaのセキュリティによるブロックで起動することができません。

###発生している問題・エラーメッセージ
LAN環境内の別PC上のTomcatにWebServiceのサーバ側jar、クライアント側.jarをそれぞれ配置し、
jnlpファイルを使って接続を試みたところ、以下のメッセージが出て実行できません。

Ignored exception: ExitException[ 3]com.sun.deploy.security.BlockedException: Javaセキュリティ設定により、このアプリケーションは実行できません。この動作はJavaコントロール・パネルで変更できます。

以前(5月頭くらい?)は同様の方法で自己証明書で署名、
Javaのセキュリティ設定による除外設定にURLを追加することにより、
警告は表示されますが動いておりました。
一字一句覚えているわけではありませんが、
信頼出来ない署名ですがいいですか?といったニュアンスの警告でした。

###該当のソースコード

pom.xml(build部分抜粋、プロジェクト固有名は伏せております) ... <build> <resources> <resource> <targetPath>META-INF</targetPath> <directory>src</directory> <includes> <include>jax-ws-catalog.xml</include> <include>wsdl/**</include> </includes> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.6</version> <executions> <execution> <id>unpack-dependencies</id> <phase>package</phase> <goals> <goal>unpack-dependencies</goal> </goals> <configuration> <excludeScope>system</excludeScope> <excludeGroupIds>junit,org.mockito,org.hamcrest</excludeGroupIds> <outputDirectory>${project.build.directory}/classes</outputDirectory> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <id>unpack-dependencies</id> <phase>package</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>${java.home}/../bin/javafxpackager</executable> <arguments> <argument>-createjar</argument> <argument>-nocss2bin</argument> <argument>-appclass</argument> <argument>${mainClass}</argument> <argument>-srcdir</argument> <argument>${project.build.directory}/classes</argument> <argument>-outdir</argument> <argument>${project.build.directory}</argument> <argument>-outfile</argument> <argument>${project.build.finalName}.jar</argument> </arguments> </configuration> </execution> <execution> <id>default-cli</id> <goals> <goal>exec</goal> </goals> <configuration> <executable>${java.home}/bin/java</executable> <commandlineArgs>${runfx.args}</commandlineArgs> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> <compilerArguments> <bootclasspath>${sun.boot.class.path}${path.separator}${java.home}/lib/jfxrt.jar</bootclasspath> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.16</version> <configuration> <additionalClasspathElements> <additionalClasspathElement>${java.home}/lib/jfxrt.jar</additionalClasspathElement> </additionalClasspathElements> </configuration> </plugin> <plugin> <groupId>org.jvnet.jax-ws-commons</groupId> <artifactId>jaxws-maven-plugin</artifactId> <version>2.3</version> <executions> <execution> <goals> <goal>wsimport</goal> </goals> <configuration> <vmArgs> <vmArg>-Djavax.xml.accessExternalSchema=all</vmArg> </vmArgs> <wsdlFiles> <wsdlFile>localhost_8080/XXXXXXXXXXXXXXX/XXXXXXXXXXXXXXX.wsdl</wsdlFile> </wsdlFiles> <packageName></packageName> <wsdlLocation>http://localhost:8080/XXXXXXXXXXXXXXX/XXXXXXXXXXXXXXX?wsdl</wsdlLocation> <staleFile>${project.build.directory}/jaxws/stale/XXXXXXXXXXXXXXX.stale</staleFile> </configuration> <id>wsimport-generate-XXXXXXXXXXXXXXX</id> <phase>generate-sources</phase> </execution> </executions> <dependencies> <dependency> <groupId>javax.xml</groupId> <artifactId>webservices-api</artifactId> <version>2.0</version> </dependency> </dependencies> <configuration> <sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir> <xnocompile>true</xnocompile> <verbose>true</verbose> <extension>true</extension> <catalog>${basedir}/src/jax-ws-catalog.xml</catalog> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jarsigner-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>signing</id> <goals> <goal>sign</goal> <goal>verify</goal> </goals> <phase>package</phase> <inherited>true</inherited> <configuration> <removeExistingSignatures>true</removeExistingSignatures> <archiveDirectory></archiveDirectory> <includes> <include>${project.build.directory}/${project.artifactId}.jar</include> </includes> <keystore>./XXXXXXXXXXXXXXX.keystore</keystore> <storepass>XXXXXXXXXXXXXXX</storepass> <keypass>XXXXXXXXXXXXXXX</keypass> <alias>XXXXXXXXXXXXXXX</alias> <verbose>true</verbose> </configuration> </execution> </executions> </plugin> </plugins> </build> ...

###試したこと

  • Javaコントロールパネルのセキュリティ設定で、該当のURLは除外しております。

  • NetBeansのJavaアプリケーションプロジェクトを作成、

同じ署名を使用して、プロジェクトをビルド、署名、jnlpから実行したところ、
署名の信頼性の警告は出ますが実行は可能でした。そのため、署名データに問題はないように思います。

  • 同じプロジェクトをJDK1.8.0_45でMavenビルドすると、警告はでますが実行できました。

JDK1.8.0_91でMavenビルドすると、警告ではなくブロックされて実行できませんでした。

おそらく問題はMavenによるビルドと、NetBeansデフォルトのビルドの違いだと思われますが、
どこが原因なのか調べる方法すらわかっておりません。

###補足情報(言語/FW/ツール等のバージョンなど)
Java (サーバ側)1.8.0_77 (クライアント側)1.8.0_91
Tomcat 8.0.27

ご助力よろしくお願いいたします。

A-pZ, ikuwow👍を押しています

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

A-pZ

2016/06/01 11:58

解決に至らないかもしれませんが、警告の内容をわかる範囲で記載していただけますか。
masaya_ohashi

2016/06/02 00:13

ほんの少しですが警告について追記いたしました。 ご指摘ありがとうございました。

回答1

4

自己解決

原因はjar内のMETA-INF/MANIFEST.MFに記載されたこの一行でした。

Permissions: sandbox

どうやらJava1.8.0_45より後のバージョンで、
javafxpackagerでビルドした際に上記の1行が追記されるようになったようです。
この表記があると、JNLPに以下のようなセキュリティ表記を加えても、
MANIFEST.MFの表記が優先されてしまうようで、それでブロックされているようです。

<security> <all-permissions/> </security>

そこで、javafxpackagerのargumentsタグに以下のタグを追加したところ、
無事に(相変わらずセキュリティ警告はでますが)動作するようになりました。

<argument>-manifestAttrs</argument> <argument>Permissions=all-permissions</argument>

NetBeansでMaven-JavaFXアプリケーションを作成するとこの罠に陥るのでお気をつけ下さい!

※補足ですが、javafxpackagerはjavapackagerと名前がかわり、
javafxpackagerは非推奨となっております。

投稿2016/06/02 09:42

編集2016/06/02 09:48
masaya_ohashi

総合スコア9198

stereo_code, ikuwow, argius, BlueMoon👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Maven 2

Apache Mavenは、ソフトウェアプロジェクトの管理ツールです。