【发布时间】:2015-05-16 18:12:26
【问题描述】:
我正在使用 JAX-RS 创建一个小 Web 服务,但我无法访问我的 GET 请求 http://localhost:8080/MyProject/resources/agenda
我只想要 XML 格式的活动列表。
这是我的代码
package com.project.test;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.PathParam;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSeeAlso;
@XmlRootElement(name = "activite")
@XmlAccessorType(XmlAccessType.FIELD)
public class Activite
{
@XmlElement(name="nomactivite")
private String but;
@XmlElement(name="tranchehoraire", type=TrancheHoraire.class)
private TrancheHoraire trancheHoraire;
@XmlElement(name="lieu")
private String lieu;
//------------------------------------------------------------------------
public Activite(String but,TrancheHoraire trancheHoraire, String lieu)
{
this.but = but;
this.trancheHoraire = trancheHoraire;
this.lieu = lieu;
}
//------------------------------------------------------------------------
public String getBut() { return but; }
public String getLieu() { return lieu; }
public TrancheHoraire getTrancheHoraire() { return trancheHoraire; }
public void setBut(String but) {
this.but = but;
}
public void setTrancheHoraire(TrancheHoraire trancheHoraire) {
this.trancheHoraire = trancheHoraire;
}
public void setLieu(String lieu) {
this.lieu = lieu;
}
}
我的数据库:
package com.project.test;
import java.util.ArrayList;
import java.util.List;
public class ActiviteBD {
private static List<Activite> activites = new ArrayList<Activite>();
static {
activites.add(new Activite("Réunion", new TrancheHoraire(new Date(01, 10, 2015), 2), "Paris"));
activites.add(new Activite("Vacances", new TrancheHoraire(new Date(02, 10, 2015), 2), "Marseille"));
activites.add(new Activite("Resto", new TrancheHoraire(new Date(03, 10, 2015), 2), "Lyon"));
}
public static List<Activite> getActivites() {
return activites;
}
}
议程 = ActiviteResource
package com.project.test;
import java.util.List;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
@Path("/agenda")
public class Agenda
{
@GET
@Produces("application/xml")
public List<Activite> getActivites() {
System.out.println("getActivites");
System.out.println(ActiviteBD.getActivites());
return ActiviteBD.getActivites();
}
@GET
@Path("/{jour}/{mois}/{annee}/{part_j}")
@Produces("application/xml")
public Activite getActiviteByDate(@PathParam("jour") int jour, @PathParam("mois") int mois, @PathParam("annee") int annee, @PathParam("part_j") int part_j) {
System.out.println("getActivite");
TrancheHoraire tranche = new TrancheHoraire(new Date(jour, mois, annee), part_j);
for (Activite current : ActiviteBD.getActivites()) {
if (tranche.equals(current.getTrancheHoraire())) {
return current;
}
}
return null;
}
}
我的约会课程
package com.project.test;
public class Date
{
private int jour,mois,annee;
public Date(int jour, int mois, int annee)
{
this.jour = jour;
this.mois = mois;
this.annee = annee;
}
public int getJour() { return jour; }
public int getMois() { return mois; }
public int getAnnee() { return annee; }
public String toString()
{
return
jour + "/"
+ mois + "/"
+ annee;
}
}
还有我的 TrancheHoraire 课程
package com.project.test;
public class TrancheHoraire
{
private Date date;
private int part_journee;
public String part_journee_v;
public TrancheHoraire(Date date, int part_journee)
{
this.date = date;
this.part_journee = part_journee;
if (part_journee == 1){
this.part_journee_v = "le matin";
}
else{
if (part_journee == 2){
this.part_journee_v = "l' apres-midi";
}
else
{
this.part_journee_v = "erreur";
}
}
}
public Date getDate() { return date; }
public int getpart_journee()
{
return part_journee;
}
@Override
public String toString()
{
return ("Tranche horaire du " + date +" -> " + part_journee_v);
}
}
有关信息,ApplicationConfig 包含:
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(com.project.test.Agenda.class);
}
我在 NetBeans 上使用 GlassFish、JAVA 6 创建了我的 Web Java 应用程序。
当我在“议程”中添加“HelloWorld”GET 方法时,它可以工作。 所以我认为问题不在于设置。
在我的控制台中,当我调用议程时:
[com.project.airbus.Activite@2d30af8c, com.project.airbus.Activite@7e5dac9c, com.project.airbus.Activite@da9eec7]
提前谢谢大家
【问题讨论】:
-
这里是服务器回答:服务器遇到了一个内部错误,导致它无法完成这个请求
-
您可以尝试访问该错误吗?
标签: java web-services rest jax-rs