2016-05-25 42 views
5

Szukałem, jak skonfigurować tomact w ramach spring-boot, aby umożliwić dostęp z zewnątrz adresów IP. Obecnie mogę wyświetlić interfejs użytkownika z locahost: port, ale nie mogę uzyskać do niego dostępu z innych systemów.Konfigurowanie rozruchu sprężynowego w celu umożliwienia dostępu do serwera sieciowego z zewnątrz adresów IP

http://localhost:8081 

Po zalogowaniu do komputera lokalnego działa.

http://192.168.0.93:8081 

Kiedy jestem zalogowany na komputerze lokalnym i spróbuj http://192.168.0.93:8081 to nie działa.

Chcę uzyskać dostęp do interfejsu użytkownika z innego komputera za pośrednictwem jego adresu IP, który nie działa.

http://192.168.0.93:8081 

Kiedy dotarłem do springs dokumentacji znalazłem można dodać adres IP, na którym chcesz ustawić Tomcat serwera WWW za korzystanie server.address. Powinno to umożliwić dostęp do serwera za pośrednictwem tego adresu IP przez systemy zewnętrzne.

server.port=8082 
server.address=192.168.0.93 

Port działa dobrze, jeśli nie dostarczy adresu ale kiedy dostarczyć adres i spróbuj uruchomić go uruchomić do problemu o wiązanie z tym adresem. Wygląda na to, że spring-boot już przypisał locahost: 8082.

Pytanie:

Jak poprawnie skonfigurować spring-boot aby umożliwić tomact być dostępne adresów zewnętrznych i rozpoznać swój własny adres IP, gdy dostępne lokalnie?

Dziękuję

stosu Ślad:

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 

Rozwiązanie

Zobacz odpowiedź poniżej

+0

Myślisz, że chcesz przeczytać na CORS - https://spring.io/guides/gs/rest-service-cors/. Wierzę również, że to, co robisz, polega na tym, że aplikacja mówi, że powinna uciekać z docelowego adresu IP. – mugua

+0

@mugua Ustawiam CORS dla naszych usług internetowych REST, postępując zgodnie z tym przewodnikiem podczas komunikacji z jednego serwera WWW na drugi. Działa to bez problemu, ale komunikuje się za pośrednictwem localhost: DIFF_PORTS. Wydaje mi się, że problem polega na tym, że różne adresy IP mają dostęp do interfejsu użytkownika z innego systemu, który według mnie jest w tomcat. Myślałem, że to czytam, jeśli nie określisz adresu server.address, będzie to wiązało się z 0.0.0.0 – ALM

+0

Niestety, domyślam się, że źle zrozumiałem. Myślałem, że próbujesz uzyskać dostęp do aplikacji ze zdalnego komputera, wprowadzając adres IP komputera zdalnego. Myślę, że masz rację, nie określając adresu IP, domyślnie będzie to localhost, ale to powinno nadal zawierać lokalny adres IP hosta. – mugua

Odpowiedz

4

Od tylu osób obejrzało to pytanie. Rozdzielczość polegała na upewnieniu się, że zapora została poprawnie skonfigurowana na hostującym komputerze CentOS i nie ustawia jawnie adresu serwera.

Nieprawidłowa instalacja

Ten udało wcześniej z zaporą nieprawidłowo konfiguracji

server.port=8081 
server.address=192.168.0.93 

Gdy zapora jest prawidłowo ustawiony nie trzeba określić server.address tylko port .

prawidłowej konfiguracji

server.port=8081 

To pozwoliło mi otworzyć aplikację poprawnie z innych systemów wykorzystujących jego IP.

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

został zmieniony przez zaporę ogniową? Mam podobny problem. – Harsh

+0

@Harsh Zmiany pokazano powyżej, czy próbowałeś? – ALM

+0

Tak Ustawiłem serwer.port i server.address, ale nie działa. Otworzyłem także port 8080 nadal pokazuje 404 błąd. – Harsh