Glassfish和Java EE Webapp 500错误5次中有4次
我想用Glassfish 4做一个休息服务。我有一个SOAP服务和Servlet可以正常工作,但无法让其他东西正常工作 这是我的简单刀:Glassfish和Java EE Webapp 500错误5次中有4次,java,rest,glassfish,Java,Rest,Glassfish,我想用Glassfish 4做一个休息服务。我有一个SOAP服务和Servlet可以正常工作,但无法让其他东西正常工作 这是我的简单刀: @Remote @WebService public interface IPersonDao { public void createAndSave(String fn, String ln, String eid); public void persist(Person p); public Collection<Perso
@Remote
@WebService
public interface IPersonDao {
public void createAndSave(String fn, String ln, String eid);
public void persist(Person p);
public Collection<Person> getAllPeople();
public Person getPerson(Integer id);
public void delete(Person p);
public void deleteById(Integer id);
}
@Stateless
@Remote(IPersonDao.class)
@Named("MemoryPersonDao")
@WebService(endpointInterface = "dummy.server.IPersonDao")
public class PersonDao implements IPersonDao {
Map<Integer, Person> people;
int id_seq = 1;
/**
*
*/
public PersonDao() {
people = new java.util.HashMap<Integer, Person>();
/*createAndSave("Mike", "Jones", "2234");
createAndSave("Joe", "Smith", "22314");*/
}
@PostConstruct
public void postConstruct() {
createAndSave("Mike", "Jones", "2234");
createAndSave("Joe", "Smith", "22314");
}
private int nextId() {
return id_seq++;
}
/*
* (non-Javadoc)
*
* @see dummy.server.IPersonDao#createAndSave(java.lang.String,
* java.lang.String, java.lang.String)
*/
@Override
public void createAndSave(String fn, String ln, String eid) {
Person p = new Person();
p.setFirstName(fn);
p.setLastName(ln);
p.setEmployeeId(eid);
p.setId(nextId());
persist(p);
}
@Override
public Person getPerson(Integer id) {
return people.get(id);
}
/*
* (non-Javadoc)
*
* @see dummy.server.IPersonDao#persist(dummy.server.Person)
*/
@Override
public void persist(Person p) {
if (p.getId() != null) {
p.setId(nextId());
}
people.put(p.getId(), p);
}
/*
* (non-Javadoc)
*
* @see dummy.server.IPersonDao#getAllPeople()
*/
@Override
public Collection<Person> getAllPeople() {
return people.values();
}
/* (non-Javadoc)
* @see dummy.server.IPersonDao#delete(dummy.server.Person)
*/
@Override
public void delete(Person p) {
deleteById(p.getId());
}
/* (non-Javadoc)
* @see dummy.server.IPersonDao#deleteById(java.lang.Integer)
*/
@Override
public void deleteById(Integer id) {
people.remove(id);
}
这是我的glassfish-web.xml
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
<context-root>/GB</context-root>
</glassfish-web-app>
/国标
但是,我无法确定我的REST URL。有人知道这里给出了什么吗?将rest端点放在另一个类中,用
@Path
注释,并使其@无状态
,以便注入EJB。看看我做了什么,没什么区别。我分离了PersonRestService
(用@Path注释),并用@ApplicationPath
注释和getClasses()
方法离开了扩展应用程序的类。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>GB</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
<context-root>/GB</context-root>
</glassfish-web-app>