2016-04-20 16 views
1

Als newby zu servicemix/karaf versuche ich ein sehr einfaches Programm zu erstellen, das eine REST-Anfrage akzeptiert und zurückgibt. Die Klasse, die ich habe, ist:servicemix: An welchem ​​Port hört mein OSGI-Bundle?

package (....) 

import org.springframework.http.HttpStatus; 
import org.springframework.http.MediaType; 
import org.springframework.http.ResponseEntity; 
import org.springframework.web.bind.annotation.RequestBody; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.bind.annotation.RestController; 

import (...).model.RSDocument; 
import (...).model.RSDocumentResponse; 

@RestController 
public class DocumentService { 

    @RequestMapping(value = "/rest/document", method = RequestMethod.POST, 
      produces = MediaType.APPLICATION_JSON_VALUE) 
    public @ResponseBody ResponseEntity<RSDocumentResponse> printDocument(
      @RequestBody RSDocument documentRequest) 
    { 
     System.out.println(documentRequest.getContent()); 
     RSDocumentResponse response = new RSDocumentResponse(); 
     response.setSuccess(true); 
     return new ResponseEntity<>(response, HttpStatus.OK); 
    } 

} 

Ich habe etwas ähnliches in Tomcat arbeiten. In Tomcat würden Sie den Port angeben, an dem eingehende Anforderungen überwacht werden, indem Sie auf den Server in der Eclipse doppelklicken und im Bereich "Ports" einen Wert festlegen. Wie stelle ich den Port in Servicemix ein oder finde ich heraus, welcher Port gerade gehört wird? Ich habe das Paket erfolgreich von der Befehlszeile in Servicemix gestartet. Meine Anwendung scheint nicht auf 80 (Apache), 8080 (None) oder 8181 (Servicemix-Konsole) zu hören

+0

Wie verpacken und bereitstellen Sie Ihre Anwendung? Ich nehme an, Sie haben mehr als diese eine Klasse –

Antwort

1

Zuerst stellen Sie sicher, dass Sie den Web-Container bereitgestellt haben. Stellen Sie dazu sicher, dass das War-Feature installiert ist.

feature:list | grep war 

, wenn es nicht installiert ist, installieren Sie es von Verlegerung:

feature:install war 

Nun, stellen Sie sicher, dass Ihr jar/Krieg enthält die Web-ContextPath Manifest Eintrag erzählt die Web-Container, der Kontext Pfad zu suchen. Wenn Sie alle anderen erforderlichen Bundles installiert haben und ausgeführt werden, einschließlich aller Abhängigkeiten, sollten Sie in der Lage sein, unter

zu navigieren.
+0

Vielleicht lohnt es sich darauf hinzuweisen, dass Karaf auf Jetty als Web-Container angewiesen ist und dass die Konfiguration, wie der Port der Konnektoren, über die jetty.xml in $ KARAF_HOME/etc. – Ralf

+0

@Ralf, das ist eigentlich nur die halbe Wahrheit ... wie es ein OSGi Http Service ist die bevorzugte Art der Konfiguration ist es, die OSGI-Service-Eigenschaften zu verwenden: org.osgi.service.http.port –

+0

siehe auch: http: //ops4j.github.io/pax/web/SNAPSHOT/User-Guide.html#basic-configuration –