Foro de elhacker.net

Programación => Java => Mensaje iniciado por: kerbero79 en 26 Marzo 2015, 18:18 pm



Título: conexion entre app desktop y bd online
Publicado por: kerbero79 en 26 Marzo 2015, 18:18 pm
buenas tardes quisiera saber como hago o a traves de que metodo puedo yo que una aplicacion echa en netbeans de escritorio se pueda conectar con una base de datos alojada en mi hosting de internet para que asi yo llenar la data desde la aplicacion de escritorio y entonces en la web puedan hacer consultas sobre esa data?

muchas gracias de ante mano les agradezco la ayudita


Título: Re: conexion entre app desktop y bd online
Publicado por: Usuario Invitado en 26 Marzo 2015, 21:15 pm
Hazlo como si te conectaras a tu bbdd local. Lo único que tienes que cambiar es la url, por ejemplo:

Código:
jdbc:mysql://148.244.24.178:3306/tu_bbdd

Saludos.


Título: Re: conexion entre app desktop y bd online
Publicado por: kerbero79 en 27 Marzo 2015, 16:03 pm
bueno le comunique a los de soporte tecnico del hosting que tengo y me indican que como es un hosting virtual que esta en un servidor fisico donde hay varios servidores virtuales de otros clientes entonces entonces permitir ese tipo de conexiones entr las aplicaciones locales con las bases de datos online ocacionario una carga constante y daria problemas porque disminuiria la estabilidad del servidor.

habria otra forma de comunicar la bs online con el java local? o existen paginas de alojamiento de bases de datos que si permitan esto de forma gratis el alojamiento de la base de datos?


Título: Re: conexion entre app desktop y bd online
Publicado por: Usuario Invitado en 27 Marzo 2015, 17:09 pm
Desconozco si hay hosting para BBDD solamente, por lo que no podría recomendarte uno. Veo otra alternativa, que es crear una API REST. Primero que todo:

¿Tu hosting tiene soporte para servidores de aplicaciones Java? Por ejemplo, Tomcat, GlassFish, WildFly, JBoss, etc.

Si la respuesta es sí, puedes crear una API REST. Ésto es, levantas tu servidor de aplicaciones Java con un serivicio RESTful. Un servicio RESTful escucha por URL, ésto es, cuando se acceda a determinada URL, el RESTful detecterá dicha petición y hará lo que tenga que hacer.

Por ejemplo:

Código
  1. @Path("/products")
  2. @Stateless
  3. public class ProductService {
  4.  
  5.    @PersistenceContext
  6.    private EntityManager em; // Inyecta la dependencia de EntityManager
  7.  
  8.    @POST
  9.    @Path("/insert")
  10.    @consumes(MediaType.APPLICATION_JSON)
  11.    public void insert(JSONObject product) {
  12.        EntityTransaction tx = em.getTransaction();
  13.        tx.begin();
  14.        ProductVO p = new ProductVO();
  15.        p.setId(product.get("id"));
  16.        p.setName(product.get("name"));
  17.        p.setDescription(product.get("description"));
  18.        p.setPrice(product.get("price"));
  19.        em.save(p);
  20.        tx.commit();
  21.    }
  22.  
  23.    // otras URLs...
  24.  
  25. }

  • @POST: Indica que la llamada deberá ser escuchada por tipo POST.
  • @Consumes(MediaType.APPLICATION_JSON): Indica que se consumirá un objeto JSON.

Recibe el objeto JSON enviado desde tu aplicación de escritorio y lo guarda en la BBDD por medio de JPA. En el ejemplo usé JPA, pero se puede hacer con código SQL ordinario.

Desde el cliente, para guardar datos:

Código
  1. ClientConfig config = new DefaultClientConfig();
  2.  Client client = Client.create(config);
  3.  client.addFilter(new LoggingFilter());
  4.  WebResource service = client.resource(getBaseURI());
  5.  // Crea el JSON a enviar
  6.  JSONObject inputJsonObj = new JSONObject();
  7.  inputJsonObj.put("id", new Short("1"));
  8.  inputJsonObj.put("name", "Shampoo"));
  9.  inputJsonObj.put("description", "Shampoo control anti caspa");
  10.  inputJsonObj.put("price", new BigDecimal("24.90"));
  11.  // Aquí es donde se llama a "/api/products/insert" y se envía el JSONObject para poder guardarlo en la BBDD
  12.  System.out.println(service.path("api").path("products").path("insert").accept(MediaType.APPLICATION_JSON).post(JSONObject.class, inputJsonObj));


No será tan fácil de implementar, pero se adapta a lo que requieres.


Saludos.