마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

google app engine에 data보내기

0 추천

google app engine을 이용하여 간단한 어플을 만드는 중 입니다.

eclipse plug in 으로 AppEngine프로젝틀르 만들고

다음과 같이 JDO Entity 2개를 만들었습니다.

@Entity
public class CheckIn {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Key key;
    private String placeId;
    private String userEmail;
    private Date checkinDate;

    public Key getKey() {
        return key;
    }

    public String getPlaceId() {
        return placeId;
    }
    public void setPlaceId(String placeId) {
        this.placeId = placeId;
    }

    public String getUserEmail() {
        return userEmail;
    }
    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail;
    }

    public Date getCheckinDate() {
        return checkinDate;
    }
    public void setCheckinDate(Date date) {
        checkinDate = date;
    }
}


    @Entity
public class Pizza {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Key key;
    private String placeId;
    private String userEmail;
    private Date checkinDate;

    public Key getKey() {
        return key;
    }

    public String getPlaceId() {
        return placeId;
    }
    public void setPlaceId(String placeId) {
        this.placeId = placeId;
    }

    public String getUserEmail() {
        return userEmail;
    }
    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail;
    }

    public Date getCheckinDate() {
        return checkinDate;
    }
    public void setCheckinDate(Date date) {
        checkinDate = date;
    }
}

class이름을 빼고는 완전히 같은 내용입니다.

위 JDO로 backend와 라이브러리를 자동생성하고 앱엔진에 deploy한 뒤 andorid application에서 다음 코드로 data를 입력합니다.

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

				new PizzaTask().execute();
				new CheckInTask().execute();
	}

	private class CheckInTask extends AsyncTask<Void, Void, Void> {
		@Override
		protected Void doInBackground(Void... params) {
			CheckIn checkin = new CheckIn();
			checkin.setPlaceId("StoreNo1234");

			Checkinendpoint.Builder builder = new Checkinendpoint.Builder(
					AndroidHttp.newCompatibleTransport(), new JacksonFactory(),
					null);

			builder = CloudEndpointUtils.updateBuilder(builder);

			Checkinendpoint endpoint = builder.build();

			try {
				endpoint.insertCheckIn(checkin).execute();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			return null;
		}
	}

	private class PizzaTask extends AsyncTask<Void, Void, Void> {
		@Override
		protected Void doInBackground(Void... params) {
			Pizza pizza = new Pizza();
			pizza.setPlaceId("choco");

			Pizzaendpoint.Builder builder = new Pizzaendpoint.Builder(
					AndroidHttp.newCompatibleTransport(), new JacksonFactory(),
					null);

			builder = CloudEndpointUtils.updateBuilder(builder);

			Pizzaendpoint endpoint = builder.build();
			try {
				endpoint.insertPizza(pizza).execute();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			return null;
		}
	}}

두 AsyncTask역시 class이름을 빼고는 동일한 코드입니다.

 

그런데 app engine서버 화면에서 실행된결과 로그를 확인해 보면 InsertCheckIn은 잘 완료가 되어 Datastore Viewer에서 확인이 됩니다. 하지만 InsertPizza는 500에러가 발생합니다. 

애러 로그입니다.

- 2013-11-06 20:22:48.799
   /_ah/spi/com.example.gaetest.CheckInEndpoint.insertCheckIn 200 3211ms
   0kb Google-HTTP-Java-Client/1.16.0-rc (gzip) module=default version=1

 - 2013-11-06 20:22:40.426      
   /_ah/spi/com.example.gaetest.PizzaEndpoint.insertPizza 500 5851ms 0kb
   Google-HTTP-Java-Client/1.16.0-rc (gzip) module=default version=1 

   com.google.api.server.spi.SystemService invokeServiceMethod: null  
   java.lang.NullPointerException at
   org.datanucleus.api.jpa.JPAEntityManager.find(JPA

제 생각에는 앤진 프로젝트를 deploy 했을 때 GAE에서 관련테이블을 생성하지 못하고 있는 것 같습니다. 새로운 프로젝트를 몇번씩 만들어 시도하여도 위의 결과만 되풀이되고 있습니다.

왜 동일한 두 코드로 실행하였는데 결과가 다를까요.

Google App Engine  개발자분들의 조언을구합니다.

익명사용자 님이 2013년 11월 7일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...