【问题标题】:Google App Engine JDO Persistence Manager and 500 server errorGoogle App Engine JDO Persistence Manager 和 500 服务器错误
【发布时间】:2011-03-07 00:47:50
【问题描述】:

每次运行我的服务时,我都会收到 500 错误,因为谷歌消息几乎没有告诉我我开始上传服务并注释掉部分。如果不使用 JDO 持久性管理器对象,它似乎可以正常工作。如果有人可以快速查看我的代码并告诉我我是否错误地使用了 JDO Persistence Manager,那就太好了。这对我很有帮助。

@Path("/surveymakerpro/")
public class SurveyResource {

    // JDO Persistence object
    private PersistenceManager surveyDataStore = SurveyPersistenceManagerFactory
            .get().getPersistenceManager();

    @GET
    @Produces({ "application/xml", "application/json" })
    @Path("/survey/{surveyName}/")
    public Survey getSurvey(@PathParam("surveyName") String surveyName) {

        Survey e = surveyDataStore.getObjectById(Survey.class, surveyName);

        return e;
    }

    @GET
    @Produces({ "application/xml", "application/json" })
    @Path("/allsurveys")
    public SurveyNames getListOfSurveys() {

        //test code

        SurveyQuestion one = new SurveyQuestion();
        one.setAnswer("Yes");
        one.setId(3);
        one.setQuestion("Do you like cake?");

        SurveyQuestion two = new SurveyQuestion();
        two.setAnswer("Yes");
        two.setId(3);
        two.setQuestion("Do you like cake?");

        List<SurveyConverter> sur = new ArrayList<SurveyConverter>();
        sur.add(new SurveyConverter(one));
        sur.add(new SurveyConverter(two));

        Survey surv = new Survey(sur);

        surv.setSurveyName("Test Survey");

        Survey survv = new Survey(sur);
        survv.setSurveyName("sdd");


        surveyDataStore.makePersistent(surv);
        surveyDataStore.makePersistent(survv);

        //test code

        List<String> surveyNames = new ArrayList<String>();

        Extent<Survey> extent = surveyDataStore.getExtent(Survey.class, false);

        for (Survey survey : extent) {

            surveyNames.add(survey.getSurveyName());

        }
        extent.closeAll();

        SurveyNames surveyName = new SurveyNames(surveyNames);

        surveyDataStore.close();
        return surveyName;

    }

    @POST
    @Consumes({ MediaType.APPLICATION_XML })
    @Path("/addSurvey")
    public void addSurvey(Survey survey) {

        surveyDataStore.makePersistent(survey);

    }

    // This method gets a survey object stores its data into a TakenSurvey
    // object and stores it
    // in the Google data store.
    @POST
    @Consumes({ MediaType.APPLICATION_XML })
    @Path("/addTakenSurvey")
    public void addTakenSurvey(Survey survey) {

        List<SurveyConverter> surveyConverter = survey.getSurvey();
        TakenSurvey takenSurvey = new TakenSurvey();

        for (SurveyConverter s : surveyConverter) {

            TakenSurveyQuestion tsq = new TakenSurveyQuestion(s.getId(),
                    s.getQuestion(), s.getAnswer());

            takenSurvey.getSurvey().add(tsq);
        }

        surveyDataStore.makePersistent(takenSurvey);

    }

    @GET
    @Produces({ "application/xml", "application/json" })
    @Path("/analysis/{surveyName}/{question}/")
    public SurveyDataConverter analyzeSurveys(
            @PathParam("surveyName") String surveyName,
            @PathParam("question") String questionNum) {

        Extent<TakenSurvey> extent = surveyDataStore.getExtent(
                TakenSurvey.class, false);

        List<TakenSurvey> takenSurveys = new ArrayList<TakenSurvey>();

        for (TakenSurvey ts : extent) {

            if (ts.getSurveyName().equals(surveyName)) {

                takenSurveys.add(ts);
            }

        }
        extent.closeAll();

        SurveyAnalyzer analyze = new SurveyAnalyzer(takenSurveys);
        analyze.getData();
        SurveyData data = analyze.getSurveyData(Integer.parseInt(questionNum));

        return new SurveyDataConverter(data);

    }

    // remove survey

    // remove taken survey

}

【问题讨论】:

    标签: google-app-engine jdo


    【解决方案1】:

    不要指望错误页面会为您提供堆栈跟踪信息——出于安全性和可用性的原因,这将是非常糟糕的做法。相反,异常会记录在 App Engine 管理控制台的“日志记录”下。那里的堆栈跟踪会告诉您出了什么问题;如果您仍然无法弄清楚,请更新您的问题以将其包含在内,以便我们进一步提供帮助。

    【讨论】:

    • 是的,我意识到,它有很大帮助。
    猜你喜欢
    • 2020-02-20
    • 2012-01-25
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2010-12-11
    相关资源
    最近更新 更多