私はこれを機能させるために多くのことを試みましたが、とにかく機能していません。また、これに関する適切なドキュメントが見つかりません。私はCustomExceptionMapper
自分のCustomException
タイプにを実装しようとしています。はCustomException
正しくスローされますが、キャッチされません。
CustomExceptionMapper
で注釈を付ける@Provider
だけで十分だと思いましたが、検出されません。web.xmlでスキャンを許可しようとしましたが、https ://issues.jboss.org/browse/AS7-1739で見つかりました。7.0.1Finalを使用しています。おそらく解決策はバージョンの変更ですが、この決定は私次第ではありません。
getClasses()
また、 orgetSingletons
メソッドをオーバーライドして、そこにを追加することもできますCustomExceptionMapper
が、それが検出されないだけです。
私のApplicationクラスは次のようになります。
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/service")
public class MyApp extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
classes.add(TestExceptionMapper.class);
return classes;
}
}
そしてマッパー
@Provider
public class TestExceptionMapper implements ExceptionMapper<TestException> {
public Response toResponse(TestException ex) {
//something, but I cannot reach it.
}
}
Web.xml
<context-param>
<param-name>resteasy.providers</param-name>
<param-value>com.mycompany.rest.exceptions.TestExceptionMapper</param-value>
</context-param>
<servlet>
<servlet-name>RestletServlet</servlet-name>
<servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
<init-param>
<param-name>org.restlet.application</param-name>
<param-value>com.mycompany.rest.application.myApplication</param-value>
</init-param>
</servlet>
そして、URLを介して呼び出されているサービス:
@Stateless
@Path("/somePath")
public class someService {
@GET //this should be post, but for testing I'm using get
@Path("/some/update/someth")
@Produces()
public String updateSometh(@NotNull @QueryParam("key") String key, @QueryParam(value = "somethID") Long somethID) throws TestException {
// ....
}
これを正しいパラメーターで呼び出すと、機能します。しかし、悪いパラメータを入れても、そうではありません。
アプリケーションが機能していることも言いたいのですが、マッパーを追加したかっただけです。