Có thể thiết lập ứng dụng JAX-RS chỉ bằng chú thích không? (sử dụng Servlet 3.0 và JAX-RS Jersey 1.1.0)
Tôi đã thử và không có may mắn. Sử dụng một số web.xml
có vẻ cần thiết.
Cấu hình A (hoạt động, nhưng có cấu hình web.xml)
web.xml
...
<servlet>
<servlet-name>org.foo.rest.MyApplication</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>org.foo.rest.MyApplication</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
...
Java
@ApplicationPath("/")
public class MyApplication extends Application {
...
}
Cấu hình B (không hoạt động, ngoại lệ được ném)
@ApplicationPath("/")
@WebServlet("/*") // <--
public class MyApplication extends Application {
...
}
Sau này dường như nhấn mạnh rằng Ứng dụng sẽ là một lớp con của Servlet (ngoại lệ không để lại phỏng đoán)
java.lang.ClassCastException: org.foo.rest.MyApplication cannot be cast to javax.servlet.Servlet
Câu hỏi
Tại sao định nghĩa web.xml hoạt động nhưng chú thích thì không? Có gì khác biệt?
Có cách nào để nó hoạt động, ví dụ: có Ứng dụng JAX-RS không có web.xml không?