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

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

新規登録して質問してみよう
ただいま回答率
85.50%
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は、ソフトウェアプロジェクトの管理ツールです。

Q&A

解決済

1回答

4633閲覧

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

masaya_ohashi

総合スコア9206

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は、ソフトウェアプロジェクトの管理ツールです。

2グッド

3クリップ

投稿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👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2016/06/01 11:58

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

2016/06/02 00:13

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

回答1

0

自己解決

原因は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

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問