2016-05-25 3 views
5

Ich habe untersucht, wie tomact innerhalb spring-boot einrichten Zugang von außerhalb IP-Adressen zu ermöglichen. Derzeit kann ich die Benutzeroberfläche von locahost: port, aber ich kann nicht von anderen Systemen zugreifen.Wie Spring-Boot einrichten, um den Zugriff auf den Webserver von außerhalb IP-Adressen

http://localhost:8081 

Wenn ich am lokalen Computer angemeldet bin, funktioniert es.

http://192.168.0.93:8081 

Als ich in den lokalen Computer und versuchen http://192.168.0.93:8081 es funktioniert nicht angemeldet bin.

Ich möchte auf die Benutzeroberfläche von einem anderen Computer über seine IP-Adresse zugreifen, es funktioniert nicht.

http://192.168.0.93:8081 

Als ich springs Dokumentation bekam ich fand Sie die IP-Adresse hinzufügen können, auf dem Sie tomcat den Webserver für die Verwendung von server.address festlegen möchten. Dies sollte dann den Zugriff des Servers über diese IP-Adresse durch externe Systeme ermöglichen.

server.port=8082 
server.address=192.168.0.93 

Der Hafen funktioniert gut, wenn ich aber die Adresse nicht angeben, wenn ich die Adresse liefern und versuchen, es zu laufen ich in ein Problem laufen an diese Adresse für die Bindung. Es sieht so aus, als ob spring-boot Locahost bereits zugewiesen hat: 8082.

Frage:

Wie kann ich richtig eingestellt spring-boot ermöglichen tomact von außen Adressen zugegriffen werden und seine eigene IP erkennen, wenn sie lokal zugegriffen?

Danke

Stack Trace:

java.net.BindException: Cannot assign requested address 
    at sun.nio.ch.Net.bind0(Native Method) 
    at sun.nio.ch.Net.bind(Net.java:433) 
    at sun.nio.ch.Net.bind(Net.java:425) 
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) 
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) 
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:340) 
    at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:765) 
    at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:473) 
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:986) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    at org.apache.catalina.core.StandardService.addConnector(StandardService.java:239) 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:194) 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:151) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) 
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) 
    at com.miw.mcb.server.ReactAndSpringDataRestApplication.main(ReactAndSpringDataRestApplication.java:18) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:478) 
    at java.lang.Thread.run(Thread.java:745) 
2016-05-25 11:24:30 - Failed to start connector [Connector[HTTP/1.1-8081]] 
org.apache.catalina.LifecycleException: Failed to start component [Connector[HTTP/1.1-8081]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153) 
    at org.apache.catalina.core.StandardService.addConnector(StandardService.java:239) 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.addPreviouslyRemovedConnectors(TomcatEmbeddedServletContainer.java:194) 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:151) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) 
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) 
    at com.miw.mcb.server.ReactAndSpringDataRestApplication.main(ReactAndSpringDataRestApplication.java:18) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:478) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.catalina.LifecycleException: service.getName(): "Tomcat"; Protocol handler start failed 
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:993) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    ... 19 common frames omitted 
Caused by: java.net.BindException: Cannot assign requested address 
    at sun.nio.ch.Net.bind0(Native Method) 
    at sun.nio.ch.Net.bind(Net.java:433) 
    at sun.nio.ch.Net.bind(Net.java:425) 
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) 
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) 
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:340) 
    at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:765) 
    at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:473) 
    at org.apache.catalina.connector.Connector.startInternal(Connector.java:986) 
    ... 20 common frames omitted 
2016-05-25 11:24:30 - Pausing ProtocolHandler ["http-nio-192.168.0.93-8081"] 
2016-05-25 11:24:30 - Stopping service Tomcat 
2016-05-25 11:24:30 - The stop() method was called on component [StandardServer[-1]] after stop() had already been called. The second call will be ignored. 
2016-05-25 11:24:30 - Stopping ProtocolHandler ["http-nio-192.168.0.93-8081"] 
2016-05-25 11:24:30 - Destroying ProtocolHandler ["http-nio-192.168.0.93-8081"] 
2016-05-25 11:24:30 - Application startup failed 
org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat servlet container 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:165) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.startEmbeddedServletContainer(EmbeddedWebApplicationContext.java:293) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:141) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) 
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) 
    at com.miw.mcb.server.ReactAndSpringDataRestApplication.main(ReactAndSpringDataRestApplication.java:18) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:478) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.IllegalStateException: Tomcat connector in failed state 
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(TomcatEmbeddedServletContainer.java:159) 
    ... 16 common frames omitted 

Lösung

die Antwort Siehe unten

+0

Denken Sie wollen auf CORS nachlesen - https://spring.io/guides/gs/rest-service-cors/. Ich glaube auch, dass Sie versuchen, der Anwendung zu sagen, dass sie von der Ziel-IP ablaufen soll. – mugua

+0

@mugua Ich konfiguriere CORS für unsere REST-Web-Services, die diesem Leitfaden folgen, wenn wir von einem Webserver zum anderen kommunizieren. Das funktioniert ohne ein Problem, aber es kommuniziert über localhost: DIFF_PORTS. Das Problem, das ich glaube, erlaubt unterschiedlichen IP-Adressen, auf die UI von einem anderen System zuzugreifen, das ich in Tomcat glaube. Ich dachte, ich lese, dass, wenn Sie nicht die server.address angeben, wird es an 0.0.0.0 – ALM

+0

binden, sorry, denke ich missverstanden. Ich dachte, Sie versuchten, von einem Remote-Computer aus auf die Anwendung zuzugreifen, indem Sie die IP des Remote-Computers eingeben. Ich denke, Sie haben Recht, indem Sie keine IP-Adresse angeben, sondern localhost, aber immer noch die lokale IP-Adresse des Host-Rechners. – mugua

Antwort

4

Da so viele Menschen diese Frage gesehen haben. Die Lösung bestand darin, sicherzustellen, dass die Firewall korrekt auf dem Host-CentOS-Computer konfiguriert wurde und die Serveradresse nicht explizit festgelegt wurde.

FALSCH SETUP

Diese fehlgeschlagen zuvor mit dem Firewall falsch Setup

server.port=8081 
server.address=192.168.0.93 

Sobald die Firewall richtig konfiguriert ist Sie brauchen nicht die server.address nur den Port angeben .

korrekte Einstellung

server.port=8081 

Das erlaubte mir, auf die Anwendung zuzugreifen korrekt aus anderen Systemen seine IP.

http://<someip>:<server.port> 
http://192.168.0.93:8081 
+0

Welche Firewall-Änderungen haben Sie vorgenommen? Ich stehe vor einem ähnlichen Problem. – Harsh

+0

@Harsh Die Änderungen sind oben gezeigt, haben Sie diese versucht? – ALM

+0

ja ich habe server.port und server.address gesetzt aber es funktioniert nicht. Ich habe auch den 8080-Port geöffnet, es zeigt immer noch 404 Fehler. – Harsh

Verwandte Themen