2012-08-06 4 views
6

Ich möchte Embedded Tomcat ausführen, die nur HTTPS (8443) verwendet. Ich möchte nicht, dass der 8080-Port überhaupt benutzt wird. Irgendeine Idee?Embed Tomcat-7 nur in https

 

    Connector httpsConnector = new Connector(); 
    httpsConnector.setPort(httpsPort); 
    httpsConnector.setSecure(true); 
    httpsConnector.setScheme("https"); 
    httpsConnector.setAttribute("keystoreFile", appBase + "/.keystore"); 
    httpsConnector.setAttribute("clientAuth", "false"); 
    httpsConnector.setAttribute("sslProtocol", "TLS"); 
    httpsConnector.setAttribute("SSLEnabled", true); 

    Tomcat tomcat = new Tomcat(); 
    tomcat.getService().addConnector(httpsConnector); 
    tomcat.setPort(8080); 
    Connector defaultConnector = tomcat.getConnector(); 
    defaultConnector.setRedirectPort(8443); 

    tomcat.setBaseDir("."); 
    tomcat.getHost().setAppBase(appBase); 

    StandardServer server = (StandardServer) tomcat.getServer(); 
    AprLifecycleListener listener = new AprLifecycleListener(); 
    server.addLifecycleListener(listener); 

Dank

+0

Haben Sie es geschafft, den 8080-Port zu verbieten? –

Antwort

2

Sie haben würde den Stecker in [tomcat-dir] /conf/server.xml definiert entfernen, die es 8080 bindet und einen separaten Anschluss für HTTPS haben.

+0

Eigentlich bin ich Tomcat einbetten, ich benutze server.xml nicht dort. Programmatically connector wird hinzugefügt – Srinivas

+0

Wie startet Ihr Tomcat? Können Sie in Ihrer Frage mehr Details angeben? – Chris

+0

bearbeitet Post enthalten Code für die Einbettung – Srinivas

0

Ich habe gerade versucht mit dem Schnipsel in der Frage für die Erstellung der httpsConnector und es hat super funktioniert! Außer, dass ich hatte eine fehlende Zeile hinzufügen:

httpsConnector.setAttribute("keystorePass", "YOUR-PASSWORD-HERE"); 

, dass auf das Passwort Ich Setup einstellen, wenn creating the keystore mit keytool den Trick.

Danke!

0

Den defaultConnector von der Tomcat-Instanz abrufen und für HTTPS einrichten. Auf diese Weise gibt es keinen anderen Anschluss:

Connector defaultConnector = tomcat.getConnector(); 
    defaultConnector.setPort(8443); 
    defaultConnector.setSecure(true); 
    defaultConnector.setScheme("https"); 
    defaultConnector.setAttribute("keystorePass", "password"); 
    defaultConnector.setAttribute("keystoreFile", absolutePath + "/keystore.jks"); 
    defaultConnector.setAttribute("clientAuth", "false"); 
    defaultConnector.setAttribute("sslProtocol", "TLS"); 
    defaultConnector.setAttribute("SSLEnabled", true);