【问题标题】:jersey restful webservice resource not found errorjersey restful webservice 资源未找到错误
【发布时间】:2015-09-11 07:10:45
【问题描述】:

我正在使用 jersey restful webservice + hibernate 框架和 maven java 项目制作一个注册页面。 报名班级:

package com.data;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Entity;
@Entity
public class Registration {

@Id @GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String fristName;
private String lastName;
private String email;
private String password;
private String rePassword;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getFristName() {
    return fristName;
}
public void setFristName(String fristName) {
    this.fristName = fristName;
}
public String getLastName() {
    return lastName;
}
public void setLastName(String lastName) {
    this.lastName = lastName;
}
public String getEmail() {
    return email;
}
public void setEmail(String email) {
    this.email = email;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
public String getRePassword() {
    return rePassword;
}
public void setRePassword(String rePassword) {
    this.rePassword = rePassword;
}
}

注册服务类:

package com.dao;
import java.util.ArrayList;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.data.Registration;
public class RegistrationService {

private SessionFactory sessionFactory = null;

public Registration adddNewUser(Registration newUser){

    try{
        sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        session.save(newUser);
        session.getTransaction().commit();
        session.close();
    }catch(Exception ex){
        ex.printStackTrace();
    }

    return newUser;
}

@SuppressWarnings("unchecked")
public ArrayList<Registration> getUsers(){
    ArrayList<Registration> users = new ArrayList<Registration>();
    try{
        sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        users = (ArrayList<Registration>) session.createCriteria(Registration.class).list();
        session.close();
    }catch(Exception ex){
        ex.printStackTrace();
    }
    return users;
}
}

RegistrationResource 类:

    package com.resource;
import java.util.ArrayList;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.dao.RegistrationService;
import com.data.Registration;
@Path("register")
public class RegistrationResource {

private RegistrationService registrationService = new RegistrationService();

@Path("new")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Registration addNewUser(Registration newUser){
    return registrationService.adddNewUser(newUser);
}   

@GET
@Path("all")
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Registration> getAllUsers(){
    return registrationService.getUsers();
}
}

有人帮忙....... 请有人告诉我哪里有问题,我会感谢你... :)

【问题讨论】:

    标签: java hibernate web-services rest maven


    【解决方案1】:

    你正在使用 Maven 和 pom 作为构建机制来构建你的应用程序。如果你的 restful 服务是一个 web 应用程序,那么你需要在 web.xml 中映射 restful 属性,否则 jersey 服务器将无法找到资源:

     <servlet>
                <servlet-name>jersey-serlvet</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.resource</param-value>
                </init-param>
                <init-param>
                    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
                    <param-value>true</param-value>
                </init-param>
                <load-on-startup>1</load-on-startup>
            </servlet>
    
    
        <!-- Servlet Mappings -->
                <servlet-mapping>
                <servlet-name>jersey-serlvet</servlet-name>
                <url-pattern>/register/*</url-pattern>
            </servlet-mapping>
    

    【讨论】:

    • 我正在检查邮递员休息客户端创建项目时球衣制作的一种方法运行良好,而我制作的另一种方法不起作用
    • 你能告诉我哪种方法不起作用吗??
    • 仅查看您的代码,在我看来,以下方法不起作用: public ArrayList getAllUsers(){ return registrationService.getUsers();由于球衣默认情况下不允许您发送对象的arrayList。您需要修改默认的 ContextResolver 或 Messagebodywriter 才能做到这一点。您可以做的另一件事是将 ArrayList 包装在 javax.ws.rs.core.GenericEntity 中并返回 GenericEntity>(registrationService.getUsers()).
    猜你喜欢
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多