@ -15,6 +15,7 @@
@@ -15,6 +15,7 @@
* /
package org.springframework.cloud.netflix.eureka.server ;
import java.io.IOException ;
import java.lang.reflect.Field ;
import java.lang.reflect.Modifier ;
@ -30,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired;
@@ -30,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass ;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean ;
import org.springframework.boot.context.properties.EnableConfigurationProperties ;
import org.springframework.boot.logging.log4j.Log4JLoggingSystem ;
import org.springframework.cloud.netflix.eureka.DataCenterAwareMarshallingStrategy ;
import org.springframework.cloud.netflix.eureka.DiscoveryManagerInitializer ;
import org.springframework.cloud.netflix.eureka.EurekaServerConfigBean ;
@ -44,6 +46,7 @@ import org.springframework.context.SmartLifecycle;
@@ -44,6 +46,7 @@ import org.springframework.context.SmartLifecycle;
import org.springframework.context.annotation.Bean ;
import org.springframework.context.annotation.Configuration ;
import org.springframework.core.Ordered ;
import org.springframework.core.io.ClassPathResource ;
import org.springframework.util.ReflectionUtils ;
import org.springframework.web.context.ServletContextAware ;
@ -84,27 +87,40 @@ public class EurekaServerInitializerConfiguration implements ServletContextAware
@@ -84,27 +87,40 @@ public class EurekaServerInitializerConfiguration implements ServletContextAware
this . servletContext = servletContext ;
}
@Bean
@ConditionalOnMissingBean ( DiscoveryManagerInitializer . class )
public DiscoveryManagerInitializer discoveryManagerIntitializer ( ) {
return new DiscoveryManagerInitializer ( ) ;
}
@Bean
@ConditionalOnMissingBean ( DiscoveryManagerInitializer . class )
public DiscoveryManagerInitializer discoveryManagerIntitializer ( ) {
return new DiscoveryManagerInitializer ( ) ;
}
@Override
public void start ( ) {
discoveryManagerIntitializer ( ) . init ( ) ;
new Thread ( new Runnable ( ) {
discoveryManagerIntitializer ( ) . init ( ) ;
new Thread ( new Runnable ( ) {
@Override
public void run ( ) {
try {
new EurekaBootStrap ( ) {
@Override
protected void initEurekaEnvironment ( ) {
try {
if ( System . getProperty ( "log4j.configuration" ) = = null ) {
System . setProperty ( "log4j.configuration" ,
new ClassPathResource ( "log4j.properties" ,
Log4JLoggingSystem . class ) . getURL ( )
. toString ( ) ) ;
}
}
catch ( IOException e ) {
// ignore
}
LoggingConfiguration . getInstance ( ) . configure ( ) ;
EurekaServerConfigurationManager . getInstance ( )
. setConfiguration ( eurekaServerConfig ) ;
XmlXStream . getInstance ( ) . setMarshallingStrategy ( new DataCenterAwareMarshallingStrategy ( ) ) ;
JsonXStream . getInstance ( ) . setMarshallingStrategy ( new DataCenterAwareMarshallingStrategy ( ) ) ;
XmlXStream . getInstance ( ) . setMarshallingStrategy (
new DataCenterAwareMarshallingStrategy ( ) ) ;
JsonXStream . getInstance ( ) . setMarshallingStrategy (
new DataCenterAwareMarshallingStrategy ( ) ) ;
// PeerAwareInstanceRegistry.getInstance();
applicationContext
. publishEvent ( new EurekaRegistryAvailableEvent (
@ -229,12 +245,13 @@ public class EurekaServerInitializerConfiguration implements ServletContextAware
@@ -229,12 +245,13 @@ public class EurekaServerInitializerConfiguration implements ServletContextAware
}
/ * *
* Additional aspect for intercepting method invocations on PeerAwareInstanceRegistry .
* If { @link PeerAwareInstanceRegistry # openForTraffic ( int ) } is called with a zero
* Additional aspect for intercepting method invocations on
* PeerAwareInstanceRegistry . If
* { @link PeerAwareInstanceRegistry # openForTraffic ( int ) } is called with a zero
* argument , it means that leases are not automatically cancelled if the instance
* hasn ' t sent any renewals recently . This happens for a standalone server . It seems
* like a bad default , so we set it to the smallest non - zero value we can , so that any
* instances that subsequently register can bump up the threshold .
* hasn ' t sent any renewals recently . This happens for a standalone server . It
* seems like a bad default , so we set it to the smallest non - zero value we can ,
* so that any instances that subsequently register can bump up the threshold .
*
* @author Dave Syer
*
@ -246,7 +263,7 @@ public class EurekaServerInitializerConfiguration implements ServletContextAware
@@ -246,7 +263,7 @@ public class EurekaServerInitializerConfiguration implements ServletContextAware
if ( "openForTraffic" . equals ( invocation . getMethod ( ) . getName ( ) ) ) {
int count = ( int ) invocation . getArguments ( ) [ 0 ] ;
ReflectionUtils . invokeMethod ( invocation . getMethod ( ) ,
invocation . getThis ( ) , count = = 0 ? 1 : count ) ;
invocation . getThis ( ) , count = = 0 ? 1 : count ) ;
return null ;
}
return invocation . proceed ( ) ;