javax.naming (für JMS) über Android

prophi

Grünschnabel
Hallo Leute,

ich versuche gerade eine JMS Verbindung über Android aufzubauen und bin über die Forensuche auf dieses HelloWorld-Tutorial gestoßen:

http://nareshyadav.blogspot.com/2009/04/jms-java-messaging-service-hello-world.html

Ich habe den Code bisher in ein kleines Testprojekt gebastelt. Leider fehlt mir bei Android die javax.naming.* Library und ich bekomme folgenden Fehler:

"The type javax.naming.Referenceable cannot be resolved. It is indirectly referenced from required .class files" (bei QueueSender sender = session.createSender(queue); )

Ich habe nun schon versucht die fehlende Library (jndi.jar) einzubinden. Doch dann kommt leider der Fehler "Conversion to Dalvik format failed with error 1" - Google sagt mir, dass die Android Library sich mit der Java Core Library verhakt.
Das Ganze soll auf eine einfach Nachricht an einen openMQ hinauslaufen. Sitze jetzt schon gut 2 Tage daran, kriegs aber nicht hin.
Es reicht vermutlich auch, das javax.naming Package aus der Library zu exportieren um diese dann einzubinden. Habe mich auch schon an folgendem Tutorial versucht, kriegs aber leider nicht hin:
http://code.google.com/p/dalvik/wiki/JavaxPackages

Könnt ihr mir da helfen?

Danke und Gruß, flO
 
Hm ja, die kommerzielle Lösung hatte ich auch schon ergoogelt, die haben auch reichlich die Foren mit ihrer Werbung zugestreut.
Da das ganze für meine Abschlussarbeit für die Uni ist, werd ich da kaum Geld investieren wollen/dürfen.

Warum denkst du, dass es mit dem einbinden der jars nicht funktionieren wird. Woran wird es hängen? Das Tut beschreibt wie es gehen soll:
http://code.google.com/p/dalvik/wiki/JavaxPackages
allerdings hänge ich an dem Punkt, an dem ich die Properties setzen muss, ich weiß nicht so recht was ich da in meinen Fall setzen muss?
 
Hallo,

ich würde hier einfach einen Proxy dazwischen schalten. Deine Android App sendet eine Anfrage an den Proxy der wiederum eine JMS Nachricht an das gewünschte Ziel verfasst.

Deine Android app könnte mit dem Proxy beispielsweise über ein HTTP- / Rest interface oder direkt über Sockets kommunizieren.

Gruß Tom
 
wie könnte ich so einen Proxy dann umsetzen? Wird dieser in Java geschrieben?
Hast du zufällig ein Tutorial dazu parat?

Danke dir!
 
Hallo,

eine einfache Variante:

Der Proxy als Java-Servlet das im Tomcat in einer kleinen Webapp läuft.
Der Android Client kommuniziert mit dem Servlet über HTTP. Das Servlet analysiert validiert den Request
und erstellt eine entsprechende JMS Message und sendet diese an die gewünschte Destination (dein JMS Ziel).

Wenn du noch eine Rückantwort brauchst kannst du das entweder direkt im Servlet tun... sprich du machst den
JMS Call in deiner doGet/doPost Methode und wartest synchron (mit einem Timeout) auf die JMS-Antwort. (1)
Die JMS Antwort verarbeitest du dann und schickst diese in umgewandelter Form (als Plain-Text, JSON oder XML)
mit dem HTTPResponse Body an deinen Android Client zurück.

(1) siehe auch :http://www.tutorials.de/enterprise-java-jee-j2ee-spring-co/219539-messaging-mit-jbossmq.html

Gruß Tom
 
Hi,
wie siehts denn mit XMPP aus, das ist soweit ich weiß ja in Android enthalten, und für ActiveMQ(openMQ kenn ich nicht) gibt es eine JMS/XMPP-Bridge.

Grüße
Peter
 
Hallo Thomas,

besten Dank für deinen Lösungsansatz, ich weiß nicht, ob die Lösung für mein kleines Programm nicht schon ein bisschen zu überladen ist. Ich habe noch nicht so viel mit Java (mit Servlets noch gar nichts) gemacht und werde da auch noch ne Menge Zeit investieren müssen.

@Peter
bei openMQ gibt es ein Beispiel für eine JMS Bridge, allerdings verbindet diese zwei MQ Broker miteinander:
"A JMS Bridge Example that Bridges Two MQ Brokers
------------------------------------------------

This example bridges a MQ broker running on localhost:7676 to another
MQ broker running on localhost:7677. It has 1 transacted link: ..."

Für was ist eine solche JMS Bridge denn vorgesehen?
 
Zurück