我需要在我正在使用RESTEASY的休息应用程序上使用CDI功能.所以我按照手册的说明在我的应用程序上设置了resteasy-cdi模块,该模块在JBoss AS7上运行.
但是当我启动服务器时,我收到以下错误:
13:48:08,631 ERROR [org.apache.catalina.core.StandardContext](MSC服务线程1-4)由于先前的错误,上下文[/ MainService]启动失败:java.lang.IllegalArgumentException:重复的上下文初始化参数resteasy.injector .厂
我的web.xml如下:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<listener>
<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
<servlet>
<servlet-name>Resteasy</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<context-param>
<param-name>resteasy.injector.factory</param-name>
<param-value>org.jboss.resteasy.cdi.CdiInjectorFactory</param-value>
</context-param>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几种参数组合,并尝试在此线程中配置它,但没有成功.
在web.xml上指定javax.ws.rs.core.Application并禁用resteasy.scan也无法解决问题.
我的pom.xml包含以下内容:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-cdi</artifactId>
<version>2.2.1.GA</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用和不使用神器resteasy-jarxs进行测试,以及像本文一样的依赖声明.
我真的迷路了.你有什么想法?我现在需要CDI或EJB来通过注入使用JPA的EntityManager.我知道没有它我就可以使用,但我更愿意这样,我可以探索JTA的集成和CDI未来的功能.
谢谢.
我刚刚开始使用在Tomcat上运行的jax-rs来设置web服务.有没有办法将属性文件与我的java项目(在eclipse中)捆绑在一起,以便我可以在运行时从中读取属性?如果可能的话,最好放置它的位置(通过网址无法看到),Web内容,WEB-INF等?
谢谢.
我正在学习Java EE 6和Jax-RS(还没有开始关于Jax-RS的任何事情)来为我的工作构建一个xml api.我有我的java控制器设置,现在我正在寻找使用我的模型来生成XML输出.我似乎无法通过搜索Google找到任何XML库.有人能指点我正确的方向吗?
我试图使用以下@DELETE方法从"Contacts"表中删除"Contact"(使用Jersey Framework(JAX-RS实现))
@DELETE
@Path("/delete/{contact}")
public String deleteContact(@PathParam("contact") String name) throws ClassNotFoundException, SQLException {
String response = DAOaccess.deleteContact(name);
return response;
}
Run Code Online (Sandbox Code Playgroud)
以下url用于从浏览器调用webservice:
/联系人/删除/ CONTACTNAME
但是这样做会引发HTTP状态405 - 不允许的方法.
可能是什么原因?我该如何克服这个问题?
我已经开始使用JAX-RS开发REST服务.使用Jersey非常简单,但是我使用Spring MVC和Jersey REST类遇到的一个区别是,Spring支持必须忽略Root Path元素并在Method Level上有单独的路径映射.因此,如果有上传/下载功能,我可能不希望有一个上传一个类和一个下载,泽西岛要求我现在做,因为在类级别上只有1个根路径,如下所示:
@Path("/uploads")
public class FileDownloadController {
......
}
Run Code Online (Sandbox Code Playgroud)
如果我忽略根级别@Path即在类级别,则启动服务器时Jersey不会识别我的类.这是我想要实现的目标:
public class FileProcessController {
@Path("/uploads")
public Response uploadFile(...) {
......
}
@Path("/downloads")
public Response downloadFile(...) {
......
}
}
Run Code Online (Sandbox Code Playgroud)
任何线索将不胜感激.
谢谢
我有这个完美的资源:
@Path("/adoptable")
public class AdoptableAnimalsResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String get()
{
return "dogs";
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我怎样才能将这个类变成嵌套的内部类? 例如,
public class Grouper
{
@Path("/adoptable")
public class AdoptableAnimalsResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String get()
{
return "dogs";
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试它时,我得到404 Not Found错误,表明Jersey不会将内部类视为资源.
我有一个基本的java项目,其中我在我的java构建中使用外部导入了jersey-client-1.19.jar(使用eclipse).我正在尝试编写一个基本的泽西客户端来对Web服务进行RESTful调用.一旦我尝试导入ClientResponse类,eclipse就会抱怨 -
类型javax.ws.rs.ext.runtimedelegate $ headerdelegate无法解析.它是从所需的.class文件间接引用的.
Eclipse自动更正将我带到我的构建路径.但我没有运气解决这个问题.谷歌搜索但没有找到任何东西.
我错过了一些基本的东西.任何帮助表示赞赏.
swagger-api和之间有什么区别JAX-RS?
是swagger-api唯一的文档吗?(例如@ApiOperation)
我使用Guice作为我的依赖注入框架.我想要一些我可以添加的东西,这将使创建REST服务更容易.
我已经看过guice-servlet了,它可以很好地将路径引导到HTTP servlet,但这就是它所做的一切,我希望JAX-RS之类的注释语法可以正常工作,但事实并非如此.
实际上没有使用JAX-RS我已经google了一下,看来Jersey是这个的参考实现,但看起来它使用自己的依赖注入框架并且与Guice不兼容.此外,它有5 + MB的依赖性,这似乎很多我追求的.
Guice是否以这样的方式设计,它不适合JAX-RS,如果是这样,我还应该做些什么呢?
我正在尝试使用Spring Boot 1.4.1.RELEASE开发一个简单的基于JAX-RS的Web服务.但得到这个例外 -
java.lang.IllegalStateException: No generator was provided and there is no default generator registered
at org.glassfish.hk2.internal.ServiceLocatorFactoryImpl.internalCreate(ServiceLocatorFactoryImpl.java:308) ~[hk2-api-2.5.0-b05.jar:na]
at org.glassfish.hk2.internal.ServiceLocatorFactoryImpl.create(ServiceLocatorFactoryImpl.java:268) ~[hk2-api-2.5.0-b05.jar:na]
at org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:138) ~[jersey-common-2.23.2.jar:na]
at org.glassfish.jersey.internal.inject.Injections.createLocator(Injections.java:123) ~[jersey-common-2.23.2.jar:na]
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:330) ~[jersey-server-2.23.2.jar:na]
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392) ~[jersey-container-servlet-core-2.23.2.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177) ~[jersey-container-servlet-core-2.23.2.jar:na]
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369) ~[jersey-container-servlet-core-2.23.2.jar:na]
Run Code Online (Sandbox Code Playgroud)
这是我的计划详情 -
POM.xml中包含的依赖项 -
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
这里是JerseyConfig文件 -
package com.test.main;
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.stereotype.Component;
import com.test.resources.TutorialResource;
@Component
public class JerseyConfig extends ResourceConfig{
public JerseyConfig() {
register(TutorialResource.class);
packages("com.test.resources");
}
}
Run Code Online (Sandbox Code Playgroud) jax-rs ×10
java ×6
jersey ×4
rest ×4
web-services ×2
cdi ×1
guice ×1
java-ee ×1
java-ee-6 ×1
jboss ×1
jersey-1.0 ×1
maven ×1
properties ×1
resteasy ×1
spring-boot ×1
swagger ×1
tomcat ×1