我有
@ApplicationPath("/resourcesP")
public class RestfulPrediction extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> set = new HashSet<Class<?>>();
set.add(PredictionsRS.class);
return set;
}
}
和
@ApplicationPath("/resourcesA")
public class RestfulAdage extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> set = new HashSet<Class<?>>();
set.add(Adages.class);
return set;
}
}
两个不同的ApplicationPath和类如下所示。
@Path("/")
public class service.Adages {}
@Path("/")
public class webservices.PredictionsRS {}
<servlet>
<servlet-name>jersey</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>
service
webservices
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
如果我在param-value中取出一个包,这是有效的,如果我更改@Path注释之一,这也是有效的,所以这是我的配置的问题?
我用的是1.10号球衣。谢谢大家。
您没有在web.xml
中定义JAX-RS应用程序。尝试以下操作:
<servlet>
<servlet-name>full.name.RestfulAdage</servlet-name>
</servlet>
<servlet>
<servlet-name>full.name.RestfulPrediction</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>full.name.RestfulPrediction</servlet-name>
<url-pattern>/resourcesP/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>full.name.RestfulPrediction</servlet-name>
<url-pattern>/resourcesA/*</url-pattern>
</servlet-mapping>
并从代码中删除@applicationpath
注释。
我用Jersey 2.7、servlet容器3.0检查了上面的代码,它工作了。如果仍然有这个bug,尝试升级到Jersey 1.17(它应该不会改变Jersey 1.10的任何行为,而是修复bug),并最终使用servlet容器3.0。
<servlet>
<servlet-name>jersey</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>
com.koitoer.webservices
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
8/04/2014 09:13:40 PM com.sun.Jersey.server.impl.container.servlet.jerseyServletContainerInitializer addServletWith application信息:在servlet映射/resourcesp/*处用同名的应用程序类注册名为com.koitoer.webservices.chapter2.service2.restfulprediction的泽西servlet应用程序
8/04/2014 09:13:40 PM com.sun.Jersey.server.impl.container.servlet.jerseyServletContainerInitializer addServletWith application信息:在servlet映射/resourcesa/*处用同名的应用程序类注册名为com.koitoer.webservices.chapter2.restfuladage的泽西servlet应用程序
我正在尝试在具有两个应用程序类的 Java 应用程序上实现 Swagger,因为一个处理“公共”Web 服务,另一个处理“管理”Web 服务。我正在尝试生成两个单独的 swagger.json 文件,每个应用程序类一个。但是,仅为两个 url 生成其中一个。下面是一些代码: 公共应用程序类: 私有应用程序类: 现在,如果我点击这些URL中的任何一个,我都会得到相同的“公共”swagger json
问题内容: 可以做这样的事情吗? 我正在使用RESTEasy。 问题答案: 是的,您可以这样做,尽管您将必须重命名方法,以使它们的签名不同。 更新: 检查Dieter Cailliau的答案, 可能是您想要的… 您可以在其中检查JSR-311的API及其参考实现,名称为“ jersey”: JSR311 API 泽西岛
问题内容: JAX-RS 1.1规范在第6页上说: 如果不存在Application子类,则必须将添加的servlet命名为: 添加的servlet是什么?可以是任意servlet吗? 如果存在Application子类,并且已经定义了一个servlet,该servlet的servlet初始化参数为: 同样,这里的“ servlet”是什么? 如果存在不由现有Servlet处理的Applicati
问题内容: 我使用AppFuse创建了一个基本的应用程序外壳,并按照AppFuse教程使用Jax- RS创建了一个简单的RESTful服务。那很好。调用时,将Person对象的集合作为Json格式的字符串返回,并带有正确的数据。 我现在想从Appfuse提供的RESTful服务中访问和对象(以使用需要这些对象的另一个库)。 我 _认为_应该可以通过添加@Context注释来实现,但是,如果我添加@
JAX-RS教程提供了JAX-RS API的概念和示例。 这个JAX-RS教程专为初学者和专业人士设计。 JAX-RS API有两个主要实现。它们分别如下 - Jersey RESTEasy 如下图示 - RESTful JAX-RS示例(Jersey) https://www.xnip.cn/web_service/jax-rs-example-jersey.html JAX-WS注释示例 ht
问题内容: 我有办法 现在我知道我可以将一个对象以json格式发布,只需将其放入正文即可。但是可以做多个对象吗?如果是这样,怎么办? 问题答案: 答案是否定的。 原因很简单:这与您可以在方法中接收的参数有关。它们必须与请求相关。对?因此,它们必须是标题或cookie或查询参数或矩阵参数或路径参数或请求正文。(仅是为了讲述完整的故事,还有其他类型的参数称为上下文)。 现在,当您在请求中收到JSON对