¿Cómo debería estructurar mi proyecto para compartir classs entre una aplicación de cliente Android y una aplicación de server JSP?

Estoy construyendo una aplicación de Android (como un proyecto de Eclipse) que necesita acceder a un service web. Vamos a enviar los datos del service como classs serializadas de JSON, por lo que queremos compartir algunas de las classs entre la aplicación de Android y la aplicación de server. Actualmente estamos pensando que la forma en que necesitamos hacer esto es estructurar nuestro repository de Git con 3 carpetas. Uno para el cliente, uno para el server y otro para la biblioteca compartida.

Pero en ese momento no pudimos descubrir cómo crear el código compartido. Parece que podemos poner todos los files .java en una carpeta y luego crear un enlace relativo a esa carpeta desde los otros proyectos, pero ¿es una buena forma de hacerlo?

La otra posibilidad que encontramos fue crear otro proyecto en Eclipse y luego include el proyecto de la biblioteca en el proyecto del cliente. Sin embargo, encontramos un problema aquí. ¿Cómo podemos hacer que la biblioteca sea utilizable tanto por el server como por Android? Si creo un nuevo proyecto Java en Eclipse, debo seleccionar un JRE para comstackrlo, pero Dalvik no es una opción, e incluso si fuera así, ¿cómo podría usar la biblioteca con una máquina virtual de escritorio si la biblioteca se compiló para Dalvik?

Yo usaría 3 proyectos:

  • server
  • compartido
  • cliente (Android)

e include compartida como una dependencia del proyecto tanto en el server como en el cliente. Si utilizas ant dejarías el shanetworking.jar tanto en server / lib como en client / lib cada vez que se modifique, y si usas maven es una dependencia (posiblemente con Ant + Ivy también es una dependencia). Considere Nexus como una location de repository en ese caso.

En realidad, no es necesario crear un proyecto de Eclipse separado para las classs compartidas. Solo puede crear una 'carpeta de origen común' fuera de la jerarquía de discos de los otros dos proyectos. Para los proyectos del server y del cliente: en las Propiedades / Java Build Path / Source, agregue un 'Origen del enlace' a la nueva carpeta. (Quizás esto es lo que quería decir con 'enlace relativo'). Es fácil agregar esta carpeta de origen común a un file de compilation Ant.

Puede agregar la ruta a las classs / JAR al classpath en time de ejecución del server.

Como no está claro cuál está usando, aquí solo hay una respuesta genérica basada en Apache Tomcat.

  • Abra el file /conf/catalina.properties .
  • Edite la input shanetworking.loader para include la ruta a la raíz del package de esas classs o files JAR.

    P.ej

     shanetworking.loader = /path/to/classes 

    o

     shanetworking.loader = /path/to/specific.jar 

    o

     shanetworking.loader = /path/to/*.jar 

    Incluso puede especificar varias routes separadas por una coma.