2016-05-03 4 views
0

https://github.com/WASdev/sample.batch.sleepybatchletNicht in der Lage Maven Java Batch aufrufen Rest Dienst in Freiheit eingesetzt mit

Ich versuche, die über git Beispiel auszuführen. Ich konnte ein ant build java Batch-Projekt in Freiheit konfigurieren und ausführen. aber wenn es darum geht, Maven-Projekt, konnte ich nicht den Rest-Service verwenden, um die Jobs zu steuern.Ich habe Probleme mit Benutzer-Authentifizierung Probleme mit defaultKeyStore. Ich bemerkte, dass es eine Server.xml im obigen Maven-Projekt gab, aber ich konnte kein Keystore-Passwort erstellen. sagt es "keine Freiheit Laufzeit konnte gefunden werden".

in Freiheit server.xml i ein Benutzer in basicRegistry verwendet haben und sicherheits Rolle als „batchadmin“ für den gleichen Benutzer

welche Änderungen sollten in der server.xml innerhalb Projekt getan werden, um den Server zu übergeben Authentifizierung.

+0

Können Sie weitere Details angeben, z. eine Kopie Ihrer server.xml, die genauen Befehle, die Sie ausführen, und die entsprechenden Fehlerbefehle? Das Sample selbst, wie Sie wissen, enthält keine Maven-Automatisierung, die Tests ausführt oder die WAR an Liberty verteilt, so dass ich nicht genau sagen kann, was Sie zu tun versuchen. –

+0

Noch einmal, ich weiß nicht, wie Sie die Sicherheit konfigurieren, aber wenn Sie Änderungen vorgenommen haben, versuchen Sie vielleicht, ** /resources/security/key.jks** zu löschen und den Server beim Neustart neu generieren zu lassen. –

+0

\t \t \t \t \t PremStephenIrudayaraj

Antwort

0

Um Batch-Operationen von einem Servlet, wenn Batch rollenbasierte Authentifizierung konfiguriert auszuführen, müssen Sie eine Authentifizierungsanfrage an das Servlet hinzufügen, so dass es unter einem bestimmten Benutzer ausgeführt wird, statt UNAUTHENTICATED.

Man könnte dies so zu der Probe hinzu:

import javax.servlet.annotation.HttpConstraint; 
import javax.servlet.annotation.HttpMethodConstraint; 
import javax.servlet.annotation.ServletSecurity; 
import javax.servlet.annotation.WebServlet; 

// ... 
@ServletSecurity(value = @HttpConstraint(transportGuarantee = ServletSecurity.TransportGuarantee.CONFIDENTIAL), 
    httpMethodConstraints = { @HttpMethodConstraint(value = "POST", emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.PERMIT), 
           @HttpMethodConstraint(value = "GET", emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.PERMIT), 
           @HttpMethodConstraint(value = "PUT", emptyRoleSemantic = ServletSecurity.EmptyRoleSemantic.PERMIT) }) 
@WebServlet(urlPatterns = { "/joboperator" }) 
public class JobOperatorServlet extends HttpServlet { 

dass zusätzlich ist die Benutzer-Registry zu definieren, und die Benutzer, und ihnen den Zugang zu den Batch-Rollen wie in dem Dokument, das Sie verwiesen und hier Gewährung ist ein Ausschnitt davon:

<httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/> 

<keyStore id="defaultKeyStore" password="Liberty"/> 

<basicRegistry id="basic" realm="ibm/api"> 
    <user name="bob" password="bobpwd"/> 
    <user name="jane" password="janepwd"/> 
</basicRegistry> 

<authorization-roles id="com.ibm.ws.batch"> 
    <security-role name="batchSubmitter"> 
     <user name="bob"/> 
    </security-role> 
    <security-role name="batchAdmin"> 
     <user name="jane"/> 
    </security-role> 
</authorization-roles> 

Jetzt gibt es eine separate, aber miteinander verbundene Frage, wie konfigurieren Sie Batch-Sicherheit, das heißt, die Sicherheit in das Bild bringen Batch-Funktionen. Aber ich lasse das für eine Anschlussfrage und nehme es als selbstverständlich an, dass es da ist.

+0

Ich habe die genaue Konfiguration in der server.xml meiner Freiheit angegeben. aber wenn ich die maven build ware-datei in das dropins-verzeichnis stelle und den server starte, kann ich den job nicht mit dem rest-link starten. es heißt "Benutzer UNAUTHUNTIERT hat nicht die Erlaubnis, den Job zu starten" – PremStephenIrudayaraj

+0

OK, beantwortete ich die Frage: "Wie schreibt man ein Servlet, um zu funktionieren, da die Stapelsicherheit aktiviert ist?"Das setzt voraus, dass Sie wirklich mit Batch-Sicherheit arbeiten wollten. Beachten Sie jedoch, dass Sie die Batch-REST-Schnittstelle verwenden können, ohne unbedingt Batch-Sicherheit zu verwenden. Wenn Sie nur das Beispiel ausführen möchten, experimentieren Sie mit der REST-Schnittstelle und den Tools usw., ohne sich um einige dieser Sicherheitsdetails in dieser Phase kümmern zu müssen, ist dies sicherlich eine Option.Wenn das wirklich das ist, was Sie wollten, öffnen Sie bitte eine separate Frage und ich werde das dann beantworten. –

+0

danke scott.Aber das ist die genaue Antwort, die ich will. Ich habe die oben genannten Konfigurationen innerhalb des Servlets sowie in beiden server.xml angegeben. immer noch sagt es "Benutzer UNAUTHENTIZIERT ist nicht berechtigt, Stapeljobs zu beginnen.". was bedeutet, dass es die Benutzer nicht genommen hat Ich habe – PremStephenIrudayaraj

Verwandte Themen