@ user353852で述べたように、現在の依存関係にはJava EE 6 APIのみが含まれ、メソッド本体は含まれていません。したがって、それに対してコードを実行することはできません。コンテナの外部でコードを実行するには、(GlassFishリポジトリから)「具体的な」依存関係を取得する必要があります。
<repositories>
<repository>
<id>glassfish-repository</id>
<url>http://download.java.net/maven/glassfish</url>
</repository>
...
</repositories>
<dependencies>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>3.0</version>
<scope>test</scope>
</dependency>
...
</dependencies>
そのような依存関係はスコープで宣言されるべきではないことに注意してくださいcompile
、あなたはそれをバンドルしたくありません(それはそうであるべきであるprovided
か多分test
ですが、そうではありませんcompile
)runtime
。
javaee実装のプロバイダーは重要なのだろうか?通常、私はApacheサーバーを使用しているので、サーバー上にあるのと同じjavaee実装があると便利です。
理論的には、違います。ただし、実際には、使用するサーバー(またはJava EEリファレンス実装)の実装JARを使用することをお勧めします。Java EE 6を使用しているため、これは実際にはどちらの場合もGlassFishv3のJARSを意味します。
2番目の質問ははるかに重要です。javax.servletはjavaee-api実装の一部にすぎず、他の部分を見つけることができます。ここで、「javax / validation/Validation」が必要です。
Bean Validation APIの場合、次のものが必要です(Hibernate ValidatorがRIです)。
<repositories>
<!-- For Hibernate Validator -->
<repository>
<id>jboss</id>
<name>JBoss repository</name>
<url>http://repository.jboss.org/maven2</url>
</repository>
...
</repositories>
<dependencies>
<!-- Bean Validation API and RI -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.0.2.GA</version>
<scope>runtime</scope>
</dependency>
...
</dependencies>
どのアーティファクトがjavaeeの各側面を実装しているかをどのように判断できますか。たぶんどこかにある種の「地図」があるのでしょうか?
公式なものはありませんが、BalusCからのこの素晴らしい答えが役に立ちます。