2016-04-09 32 views
0

Ich entwickle einfache Servlet in Liferay. Ich sehe, dass es initialisiert wird (verifiziert, indem man System.out in die Methode init() setzt). Wenn ich jedoch einige Daten an das Servlet weitergebe, wird es nicht aufgerufen. Wie kann dies debugged werden oder was muss ich hinzufügen, damit es funktioniert?Servlet wird nicht aufgerufen

Die Servlet-Eingabedatei wurde erstellt: webapps/ROOT/WEB-INF/web.xml, das liferay hat andere benutzerdefinierte Webapps, die funktionieren.

..... 
    <servlet> 
     <servlet-name>HealthCheckServelet</servlet-name> 
     <servlet-class>com.test.HealthCheck</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>HealthCheckServelet</servlet-name> 
     <url-pattern>/health-check/*</url-pattern> 
    </servlet-mapping> 
    ....... 

Das Servlet wird über HTTP GET aufgerufen http://host-ip/health-check/temperature

+1

Abgesehen davon (Bearbeitung von Liferay web.xml) schlecht Stil, nicht unterstützt und möglicherweise schwer zu pflegen: Sie sagen uns nicht, wie Sie tatsächlich versuchen, dieses Servlet aufzurufen. –

+0

danke hinzugefügt die Information. Das habe ich vermisst. Lass mich auch wissen, wie ich mich für den oben erwähnten schlechten Kommentar verbessern kann. – iam

Antwort

1

Die rufenden URL schlägt vor, dass der Gesundheitscheck hat nichts mit Liferay, sondern mit dem Server, der die Anwendung läuft auf zu tun. Ich würde dies in einer separaten Web-Anwendung implementieren, die völlig unabhängig von Liferay ist und sie auf demselben Anwendungsserver bereitstellen. Auf diese Weise müssen Sie sich nicht mit der web.xml von Liferay herumschlagen (die bei einer Aktualisierung von Liferay migriert werden müsste) und Ihnen trotzdem die gleichen Vorteile bieten. Wenn Sie in Ihrem Gesundheitscheck noch Liferay-Informationen benötigen, verwenden Sie einfach die API, um die benötigten Daten zu erhalten. Wiederum - Sie erhalten eine viel bessere Wartbarkeit.

Der Nebeneffekt davon ist, dass Sie in einer winzigen Webanwendung, die kein laufendes Liferay benötigt, ein einfaches Debugging erhalten. Es wird einfach sein, post a MCVE hier mit dem ganzen Code, den Sie suchen Rat auf.

Auch wenn Sie außerhalb von Liferay laufen, unterliegen Sie keinem der Servlet-Filter, die Liferay für die Bearbeitung der Anfrage anwenden wird - Ihre Anfrage könnte bereits in ihnen stecken, wer weiß. Es ist eine viel zu komplizierte Lösung für ein einfaches Problem.

+0

Sie antworten, ist gut. Aber für meinen Fall muss ich einige der Liferay APIs (Filter ap) usw. auch erweitern. All das in seprate webapp zu bringen, wird mehr sein, um mehr Probleme zu lösen, denke ich. Daher möchte ich es jetzt so machen, wie ich es beschrieben habe. – iam

+0

Können Sie Ihren minimierten Servlet-Code anzeigen? Kopieren Sie nur die relevanten Teile hier. –

+0

sicher, ich werde zurückkommen – iam