标签: jax-rs

在Tomcat中使用RESTful服务和JAX-RS/CXF

我有兴趣在Tomcat环境中使用Apache的JAX-RS实现(CXF).关于使用JAX-RS/CXF开发RESTful服务的文档非常明确和直接.但是,我不确定如何在Tomcat环境的上下文中开发JAX-RS服务.

有谁知道为Tomcat开发JAX-RS/CXF服务的好教程?

java rest tomcat cxf jax-rs

4
推荐指数
1
解决办法
2万
查看次数

我该如何开始进行单元测试使用嵌入的GlassFish和Java DB /德比在Java EE JAX-RS应用程序,最好在NetBeans SANS Maven的?

我是比较新的JAX-RS,JPA,GlassFish的,Java DB的,和NetBeans,我想编写单元测试我的代码.[版本号在底部.]但是,我坚持从哪里开始.我已经做了很多搜索,但我还没有清楚地了解如何设置我的代码的嵌入式测试.我正在使用NetBeans,但我的问题很笼统.我希望我能更清楚地形成我的问题,但这是我能做的最好的事情.到目前为止,我已经找到了以下可能的部分(更像是此时的提示).

o我想在没有Maven的情况下进行设置,但这意味着我必须手动安装嵌入式jar.问:我在哪里可以找到它们?

o创建指定GlassFish和Java DB嵌入版本的config xml文件版本(glassfish-resources.xml和persistence.xml).问:但是,您如何告诉NetBeans使用它们进行测试而不是依赖于已安装版本的生产?

我认为persistence.xml看起来像这样(从使用嵌入式德比的hibernate):

  <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
  <property name="javax.persistence.jdbc.url" value="jdbc:derby:test"/>
  <property name="javax.persistence.jdbc.user" value="root"/>
  <property name="javax.persistence.jdbc.password" value="root"/>
Run Code Online (Sandbox Code Playgroud)

o创建自定义Glassfish域配置文件(Embedded GlassFish忽略Maven测试资源).问:这应该是什么样的?我从使用NetBeans安装创建的默认domain1中获取了domain.xml,但它有很多内容.

o一旦我的项目可以访问嵌入的文件,并且它被配置为使用它们,我的JUnit线束应该是什么样的?http://jersey.java.net/nonav/documentation/latest/client-api.html#d4e759说:

protected void setUp() throws Exception {
  ...
    glassfish = new GlassFish(BASE_URI.getPort());
    ScatteredWar war = new ScatteredWar(...);
    glassfish.deploy(war);
  ...
Run Code Online (Sandbox Code Playgroud)

但是,我也看到提到的EJBContainer,例如,(从http://docs.oracle.com/javaee/6/tutorial/doc/gkcqz.html):

@BeforeClass
public static void initContainer() throws Exception {
  ec = EJBContainer.createEJBContainer(); ctx = ec.getContext();
}
Run Code Online (Sandbox Code Playgroud)

o我正在使用JPA,所以我需要访问PersistenceContext/EntityManager.目前我通过以下方式查询:

new InitialContext().lookup("java:module/<jax-rs resource name>");
Run Code Online (Sandbox Code Playgroud)

但我也看到了:

    emf = Persistence.createEntityManagerFactory("chapter02PU");
Run Code Online (Sandbox Code Playgroud)

问:什么是正确的方法来掌握这个?

我将衷心感谢您的帮助.

  • 版本:
    • GlassFish …

jax-rs java-ee javadb glassfish-embedded

4
推荐指数
1
解决办法
2322
查看次数

注释@XmlElement只写?

我是java XML绑定的新手.

这是我的班级

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * @author Martin Burchard
 * 
 */
@XmlRootElement(name = "user")
    public class User {
    private String id;
    private String nickname;
    private String email;
    private String password;

    @XmlElement(name = "id")
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @XmlElement(name = "nickname")
    public String getNickName() {
        return nickname;
    }

    public void setNickName(String nickname) {
        this.nickname = nickname;
    }

    @XmlElement(name = "email")
    public String getEMail() {
        return email; …
Run Code Online (Sandbox Code Playgroud)

java xml cxf jax-rs jaxb

4
推荐指数
1
解决办法
1803
查看次数

Apache CXF生成Number而不是String

如果字符串看起来像数字,例如.111 CXF不会将其作为字符串返回,而是作为数字返回.

<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
    <property name="serializeAsArray" value="true" />
    <property name="arrayKeys" ref="jsonKeys" />
</bean>
Run Code Online (Sandbox Code Playgroud)

可以看出,我使用的是JSON提供程序.如何强制它,提供正确的JSON字符串?

{object:{"name":"111"}} instead of {object:{"name":111}}
Run Code Online (Sandbox Code Playgroud)

提前致谢...

java cxf jax-rs

4
推荐指数
1
解决办法
2668
查看次数

JAX-RS - 无法为类型的响应对象找到MessageBodyWriter

我试图在JBoss 7.2 Rest Easy中找出JAX-RS的样本.我收到如下错误信息.

SEVERE [org.jboss.resteasy.core.SynchronousDispatcher](http-/0.0.0.0:80-2)执行GET/test/resources/1失败:org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure:无法找到MessageBodyWriter用于响应类型的对象:vsample.Image of media type:image/jpeg at org.jboss.resteasy.core.ServerResponse.writeTo(ServerResponse.java:216)[resteasy-jaxrs-2.3.5.Final.jar:] at org. jboss.resteasy.core.SynchronousDispatcher.writeJaxrsResponse(SynchronousDispatcher.java:602)[resteasy-jaxrs-2.3.5.Final.jar:] at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:528)[ resteasy-jaxrs-2.3.5.Final.jar:] org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)[resteasy-jaxrs-2.3.5.Final.jar:] at org.jboss .resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)[resteasy-jaxrs-2.3.5.Final.jar:] org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)[resteasy- jaxrs-2.3.5.Final.jar:] org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)[resteasy-jaxrs-2.3.5.Final.jar:]在javax .servlet.http.HttpServlet.service(HttpServlet.java:847)[jboss-servlet-api_3.0_spec-1.0.2.Final.jar:1.0.2.Final] org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:295)[jbossweb-7.2.0.Final.jar:7.2.0.Final] org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)[jbossweb-7.2.0.在org.apache.catalina.core上的Final.jar:7.2.0.Final].StandardWrapperValve.invoke(StandardWrapperValve.java:230)[jbossweb-7.2.0.Final.jar:7.2.0.Final] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)[jbossweb-7.2 .0.Final.jar:7.2.0.Final] at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)[jboss-as-web-7.2.0.Final.jar:7.2 .O.Final] org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)[jbossweb-7.2.0.Final.jar:7.2.0.Final] org.apache.catalina.valves. ErrorReportValve.invoke(ErrorReportValve.java:97)[jbossweb-7.2.0.Final.jar:7.2.0.Final] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)[jbossweb-7.2 .O.Final.jar:7.2.0.Final]在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)[jbossweb-7.2.0.Final.jar:7.2.0.Final] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)[jbossweb-7.2.0.Final.jar:7.2 .or.Final] org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:653)[jbossweb-7.2.0.Final.jar:7.2.0.Final] at org.apache.tomcat. util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:920)[jbossweb-7.2.0.Final.jar:7.2.0.Final] at java.lang.Thread.run(Thread.java:722)[rt的.jar:1.7.0_17]JIoEndpoint $ Worker.run(JIoEndpoint.java:920)[jbossweb-7.2.0.Final.jar:7.2.0.Final] at java.lang.Thread.run(Thread.java:722)[rt.jar:1.7 .0_17]JIoEndpoint $ Worker.run(JIoEndpoint.java:920)[jbossweb-7.2.0.Final.jar:7.2.0.Final] at java.lang.Thread.run(Thread.java:722)[rt.jar:1.7 .0_17]

我的代码是,

 import javax.ws.rs.ApplicationPath;
     import javax.ws.rs.Produces;
     import javax.ws.rs.core.Application;


     @ApplicationPath("/rest")
   public class Etag extends Application {
    }
Run Code Online (Sandbox Code Playgroud)

和,

import …
Run Code Online (Sandbox Code Playgroud)

jax-rs

4
推荐指数
1
解决办法
8487
查看次数

在eclipse中部署REST Web服务的问题

我在eclipse中使用JAX-RS编写REST Web服务,并将tomcat作为服务器.我指的是以下教程来编写Web服务:http: //www.vogella.com/tutorials/REST/article.html

当我运行该项目时,我收到以下错误:

Apr 7, 2014 12:01:53 AM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;c:\Maven\bin;C:\Program Files\Java\jdk1.6.0_41\bin;E:\android\adt-bundle-windows-x86_64-20130219\sdk\tools;E:\android\adt-bundle-windows-x86_64-20130219\sdk\platform-tools;C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin;C:\Program Files (x86)\Git\cmd;C:\Python27;C:\MinGW\bin;C:\Python27\Scripts;C:\Program Files\PostgreSQL\9.3\bin;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL …
Run Code Online (Sandbox Code Playgroud)

eclipse rest tomcat jax-rs

4
推荐指数
1
解决办法
1万
查看次数

Jersey JSON响应为HttpUrlConnector而不是JSON

我正在尝试使用Jersey 2.13作为服务器进行小型REST服务,将Vaadin 7.3.3作为"客户端",但想法是请求可以来自任何地方(不仅仅是Vaadin,这就是为什么我不使用在请求时间的bean).假设用户已经注册,请求只检查他是否存在,并返回令牌.我有一个POST URL,https://localhost:8443/logins收到

{ 
    "login-request": 
    { 
        "username":<insert username>,
        "password":<insert password> 
    }
}
Run Code Online (Sandbox Code Playgroud)

并返回:

{ 
    "login-token": 
    { 
        "token":<insert token>
    }
}
Run Code Online (Sandbox Code Playgroud)

我的客户请求代码是:

Client client = ClientBuilder.newClient();

    WebTarget target = client.target("https://127.0.0.1:8443/").path(appName + "/logins");

    //build JSON Object
    HashMap<String, String> userMap = new HashMap<>();
    userMap.put("username", user.getUsername());
    userMap.put("password", user.getPassword());

    //JSON logins request!
    JSONObject jsonLoginRequest = new JSONObject();
    try {
        jsonLoginRequest.put("login-request", userMap);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    return target.request(MediaType.APPLICATION_JSON_TYPE).post(Entity.json(jsonLoginRequest.toString()));
Run Code Online (Sandbox Code Playgroud)

服务器处理代码是:

    @POST
@Path("logins")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response generateToken(@Context HttpServletRequest request) {

    if …
Run Code Online (Sandbox Code Playgroud)

java rest json jax-rs jersey-2.0

4
推荐指数
2
解决办法
3819
查看次数

带有Jersey/JAX-RS的AJAX JSONP Restful服务

我已经阅读了很多关于stackoverflow的问题,但我没有解决我的问题.

这是我的Restful服务:

@GET
@Path("/GetAllProducts")
@Produces(MediaType.APPLICATION_JSON)
public String getAllProducts() {        
    return  "{\"name\":\"MAC\", \"quantity\":\"10\"}";
}
Run Code Online (Sandbox Code Playgroud)

它在浏览器上工作正常但是当我使用AJAX时,它没有显示错误但显示了一个弹出窗口:失败的对象[对象]

我的AJAX代码:

$.ajax({
    url: "http://localhost:8080/Restful/REST/WebService/GetAllProducts",
    type: 'GET',
    contentType: "application/json; charset=utf-8",
    dataType: "jsonp",
    success: function() { 
        alert("Success"); 
    },
    error: function(e) { 
        alert('Failed! ' + e); 
    }
});
Run Code Online (Sandbox Code Playgroud)

我试图添加:"crossDomain:true"但它没有用.

请帮我!谢谢!

ajax rest jquery json jax-rs

4
推荐指数
1
解决办法
3348
查看次数

Resteasy @FormParam返回null

任何人都可以帮我这个.

我使用带有wildfly 8.1.0的resteasy创建了一个Web服务,但@FormParam总是返回null.

UserService.java

Path("/user")
@Produces(MediaType.APPLICATION_JSON)
public class UserService {

    @POST
    @Produces(MediaType.APPLICATION_JSON)
    @Path("/create")
    public String create(@FormParam("first_name") String firstName, @FormParam("last_name") String lastName,
            @FormParam("email") String email, @FormParam("username") String username,
            @FormParam("password") String password, @FormParam("address") String address,
            @FormParam("country") String country, @FormParam("zip") String zip, @FormParam("ssnlast4") String ssnlast4,
            @FormParam("mobile") String mobile, @FormParam("dob_month") String dobMonth,
            @FormParam("dob_year") String dobYear, @FormParam("reg_type") String regType,
            @FormParam("avatar") String avatar) {

        String str = firstName  + ":" + lastName + ":" + email + ":" + username + ":" + password + ":" …
Run Code Online (Sandbox Code Playgroud)

jax-rs java-ee resteasy wildfly-8

4
推荐指数
1
解决办法
5126
查看次数

如何使用JAX-RS 2.0客户端API发布原始数据

我有一个原始的inputStream,HttpServletRequest我需要使用JAX-RS客户端将收到的整个inputStream以及头文件发送到另一个servlet(实际上).

Client client = ClientBuilder.newClient();

WebTarget reTarget = client.target("http://localhost:8100/Server");
Invocation retargetInvocation = reTarget.request().??
Response.Response response = retargetInvocation.invoke();
Run Code Online (Sandbox Code Playgroud)

我应该如何为post请求进行调用Invocation retargetInvocation = reTarget.request().post(Entity<T>).inputStream可以包含任何Raw数据

jax-rs jersey-client jersey-2.0

4
推荐指数
1
解决办法
5253
查看次数