2013-01-03 4 views
0

2 개월 전 원격 메소드를 호출하고 복잡한 객체 (사용자 정의 객체가있는 사용자 정의 객체)를 서버에서 수신해야하는 안드로이드 애플리케이션을 개발하기 시작했습니다. 내 친구와 나는 작품을 분할하여 안드로이드 클라이언트와 서버에서 작업했습니다. 시작하기 전에 클라이언트가 서버에서 필요로하는 기능을 제공하는 기본 인터페이스를 구축하여 내 친구가 (인터페이스의 구현으로 가짜 클래스를 사용하여) 프로그램을 easly 프로그래밍 할 수있게되었습니다. 인터페이스는 서버 측에서 연결을 만들고 가짜 클래스가 아닌 서버에서 함수를 호출합니다.안드로이드 클라이언트를위한 인터페이스를 공유하는 자바 서버를 구현하십시오.

이제 문제는 서버에서 클라이언트로 인터페이스를 전달할 수있는 방법을 찾을 수 없다는 것입니다. 우리는 Java RMI를 사용하려고했지만, 안드로이드가 java RMI를 지원하지 않기 때문에JAX-WS (바람둥이 7)를 사용하려고했기 때문에 실패했습니다. JAXB가 인터페이스를 처리 할 수 ​​없기 때문에 faild도됩니다. (-you can see more details here about jaxb issue-)

내 친구와 나는 정말로 잃어버린 느낌. 우리는 서버와 안드로이드 클라이언트간에 이러한 인터페이스를 전달하는 방법을 모른다. 우리가하려는 일이 가능할까요? 그렇지 않은 경우 원격 메소드를 호출하고 서버에서 복잡한 객체를 수신하는 데 사용할 수있는 다른 옵션은 무엇입니까?

감사합니다.

답변

0

서버에서 웹 서비스를 노출 할 수 있으므로 클라이언트는 필요할 때마다 가장 빠른 솔루션 일 수 있습니다.

또는 서블릿 프로그래밍을 작성하여 클라이언트에서 json 요청을 받고 처리 한 다음 json respoonse를 다시 클라이언트로 보낼 수 있습니다. 응용 프로그램이 데이터 집약적 인 경우 JSON이 많은 도움이됩니다.

+0

나는 당신의 도움을 간청합니다! 나는 이미 webservice를 만들었지 만 jaxb에 문제가있었습니다 - 여기에서 문제에 대해 알 수 있습니다 : http://stackoverflow.com/questions/14111925/creating-webservice-jax-ws-with-functions-which-return -custom-types – Dave

0

너무 늦어서 (개발 후 2 개월 후) 확실하지는 않지만 RPC를보다 쉽게 ​​만들어야하는 프레임 워크가 있는지 확인하십시오. 종료). 제가 알고있는 두 가지는 Apache Thrift (안드로이드와 함께 사용 가능합니다 - 사용하는 앱이 있습니다) 또는 Apache Etch (가능할 수도 있음)입니다.

아파치 드리프트 : http://thrift.apache.org/

아파치 에칭 : 드리프트의 http://incubator.apache.org/etch/

블로그에 대한 Evernote를 선택 : 응용 프로그램이 서버와 안드로이드에 자바 사이의 통신에 국한되어있는 경우 http://blog.evernote.com/tech/2011/05/26/evernote-and-thrift/

+0

고마워요! 그것은 intresting 보인다. Google에서 검색하려고했지만 실제로 이해할 수 없습니다. 아파치 절약과 아파치 에칭의 차이점을 알려주시겠습니까? – Dave

+0

그들은 그들이하는 일에서 매우 유사합니다. 프레임 워크의 IDL에서 인터페이스를 정의한 다음 통신을 처리 할 코드를 제공하는 생성기를 실행 한 다음 코드에 링크합니다.두 가지 모두에 대한 문서는 드물다. 듀얼 라이센스 (GPL/Commercial)를 사용하는 또 다른 대안으로 훨씬 더 나은 문서화가 있습니다. ICE http://www.zeroc.com/ice.html입니다. 이 게시물은 절약을 위해 유용 할 수 있습니다. http://stackoverflow.com/questions/7005482/how-to-i-get-started-with-apache-thrift – Swav

0

(다른 클라이언트 (예 : IOS)가 없다면 IDL 기반 솔루션과 비교할 때 RPC 경로가 더 쉬우므로 jsonrpc을 사용해야합니다. 이 솔루션은 서버 및 Android 클라이언트 구성 요소를 모두 제공합니다. 클라이언트와 서버 모두에서 구현하기가 매우 쉽습니다. 한 가지 제한은 JSON 전송이 바이너리를 지원하지 않기 때문에 바이트 배열을 인코딩해야한다는 것입니다.

관련 문제