Commit bcec9771 by 房斌

1解决dubbo tomcat 加载类的判断。没有使用不加载 2执行顺序 tomcat优先dubbo 停机

parent 5f09c068
...@@ -4,4 +4,5 @@ public interface StopService <T>{ ...@@ -4,4 +4,5 @@ public interface StopService <T>{
public T stop(); public T stop();
} }
...@@ -40,7 +40,7 @@ public class DubboCustomerDownHock extends AbstractStop { ...@@ -40,7 +40,7 @@ public class DubboCustomerDownHock extends AbstractStop {
public ExecutorDetail stop() { public ExecutorDetail stop() {
ExecutorDetail detail = new ExecutorDetail(); ExecutorDetail detail = new ExecutorDetail();
detail.setBeginTime(DateUtil.getDateTime()); detail.setBeginTime(DateUtil.getDateTime());
detail.setServiceName("dubboDownHock1013"); detail.setServiceName("dubboDownHock1025");
List<String> str = new ArrayList<String>(); List<String> str = new ArrayList<String>();
detail.setDetail(str); detail.setDetail(str);
detail.setCode(0); detail.setCode(0);
......
...@@ -5,8 +5,6 @@ import com.secoo.mall.common.util.string.StringUtil; ...@@ -5,8 +5,6 @@ import com.secoo.mall.common.util.string.StringUtil;
import com.secoo.mall.common.core.bean.gracefulshowtdownBean.ExecutorDetail; import com.secoo.mall.common.core.bean.gracefulshowtdownBean.ExecutorDetail;
import com.secoo.mall.dubbo.service.AbstractStop; import com.secoo.mall.dubbo.service.AbstractStop;
import org.apache.catalina.connector.Connector; import org.apache.catalina.connector.Connector;
import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
...@@ -14,8 +12,7 @@ import java.util.concurrent.ThreadPoolExecutor; ...@@ -14,8 +12,7 @@ import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
//springboot 容器关闭 //springboot 容器关闭
@Component public class TomcatConnectShoutDownHock extends AbstractStop {
public class ServletConnectShoutDownHock extends AbstractStop {
private volatile Connector connector; private volatile Connector connector;
public Connector getConnector() { public Connector getConnector() {
...@@ -67,6 +64,6 @@ public class ServletConnectShoutDownHock extends AbstractStop { ...@@ -67,6 +64,6 @@ public class ServletConnectShoutDownHock extends AbstractStop {
@Override @Override
public Integer getHandleTypeOrder() { public Integer getHandleTypeOrder() {
return 1; return -1;
} }
} }
...@@ -5,15 +5,17 @@ import com.secoo.mall.dubbo.monitor.config.ConfigCenter; ...@@ -5,15 +5,17 @@ import com.secoo.mall.dubbo.monitor.config.ConfigCenter;
import com.secoo.mall.dubbo.monitor.dubbo.service.ProviderService; import com.secoo.mall.dubbo.monitor.dubbo.service.ProviderService;
import com.secoo.mall.dubbo.monitor.dubbo.service.RegistryServerSync; import com.secoo.mall.dubbo.monitor.dubbo.service.RegistryServerSync;
import com.secoo.mall.dubbo.monitor.dubbo.service.impl.ProviderServiceImpl; import com.secoo.mall.dubbo.monitor.dubbo.service.impl.ProviderServiceImpl;
import com.secoo.mall.dubbo.service.GracefullyShoutDown;
import com.secoo.mall.dubbo.service.TomcatGracefullyShutDown;
import com.secoo.mall.dubbo.service.impl.DubboCustomerDownHock; import com.secoo.mall.dubbo.service.impl.DubboCustomerDownHock;
import com.secoo.mall.dubbo.service.DubboUpdata; import com.secoo.mall.dubbo.service.DubboUpdata;
import com.secoo.mall.dubbo.service.impl.ServletConnectShoutDownHock; import com.secoo.mall.dubbo.service.impl.TomcatConnectShoutDownHock;
import org.apache.dubbo.common.URL; import org.apache.dubbo.common.URL;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.apache.dubbo.registry.Registry; import org.apache.dubbo.registry.Registry;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn; import org.springframework.context.annotation.DependsOn;
...@@ -23,18 +25,15 @@ import org.springframework.context.annotation.DependsOn; ...@@ -23,18 +25,15 @@ import org.springframework.context.annotation.DependsOn;
public class MatrixGracefulShutDownAutoConfiguration { public class MatrixGracefulShutDownAutoConfiguration {
@Bean @Bean
@ConditionalOnClass(RegistryServerSync.class)
@ConditionalOnExpression("!T(org.springframework.util.StringUtils).isEmpty('${dubbo.registry.address:}')")
ProviderService createProviderService(Registry registry, RegistryServerSync sync) { ProviderService createProviderService(Registry registry, RegistryServerSync sync) {
return new ProviderServiceImpl(registry,sync); return new ProviderServiceImpl(registry,sync);
} }
@Bean @Bean
ServletConnectShoutDownHock createServletConnectShoutDownHock() { @ConditionalOnExpression("!T(org.springframework.util.StringUtils).isEmpty('${dubbo.registry.address:}')")
return new ServletConnectShoutDownHock(); @ConditionalOnClass(ConfigCenter.class)
}
@Bean
@ConditionalOnBean(ConfigCenter.class)
@DependsOn("configCenter") @DependsOn("configCenter")
UpDatas dubboUpdata( ConfigCenter configCenter){ UpDatas dubboUpdata( ConfigCenter configCenter){
DubboUpdata transport= new DubboUpdata(); DubboUpdata transport= new DubboUpdata();
...@@ -46,27 +45,52 @@ public class MatrixGracefulShutDownAutoConfiguration { ...@@ -46,27 +45,52 @@ public class MatrixGracefulShutDownAutoConfiguration {
} }
@Bean @Bean
public GracefullyShoutDown createGraceObject(ServletConnectShoutDownHock servletConnectShoutDownHock,ProviderService providerService,UpDatas dubboUpdata) { @ConditionalOnExpression("!T(org.springframework.util.StringUtils).isEmpty('${dubbo.registry.address:}')")
return new GracefullyShoutDown( servletConnectShoutDownHock, providerService, dubboUpdata); DubboCustomerDownHock createDubboConsumerDownHock(ProviderService providerService) {
return new DubboCustomerDownHock(providerService);
} }
@Bean @Bean
@ConditionalOnExpression("!T(org.springframework.util.StringUtils).isEmpty('${dubbo.registry.address:}')")
public RegistryServerSync createSynObject(Registry registry) { public RegistryServerSync createSynObject(Registry registry) {
return new RegistryServerSync(registry); return new RegistryServerSync(registry);
} }
@Bean
DubboCustomerDownHock createDubboConsumerDownHock(ProviderService providerService) {
return new DubboCustomerDownHock(providerService);
}
@Bean @Bean
@ConditionalOnExpression("!T(org.springframework.util.StringUtils).isEmpty('${dubbo.registry.address:}')")
ConfigCenter configCenter(){ ConfigCenter configCenter(){
return new ConfigCenter(); return new ConfigCenter();
} }
@Bean
@ConditionalOnClass(TomcatConnectorCustomizer.class)
TomcatConnectShoutDownHock createServletConnectShoutDownHock() {
return new TomcatConnectShoutDownHock();
}
@Bean
@ConditionalOnClass(TomcatConnectShoutDownHock.class)
public TomcatGracefullyShutDown createSpringbootTomcatInit(TomcatConnectShoutDownHock tomcatConnectShoutDownHock){
return new TomcatGracefullyShutDown(tomcatConnectShoutDownHock);
}
// @Bean
// public GracefullyShoutDown createGraceObject(TomcatConnectShoutDownHock servletConnectShoutDownHock, ProviderService providerService, UpDatas dubboUpdata) {
// return new GracefullyShoutDown( servletConnectShoutDownHock, providerService, dubboUpdata);
// }
@Bean
@ConditionalOnExpression("!T(org.springframework.util.StringUtils).isEmpty('${dubbo.registry.address:}')")
public GracefullyShoutDown createGraceObject( UpDatas dubboUpdata) {
return new GracefullyShoutDown(dubboUpdata);
}
} }
\ No newline at end of file
...@@ -8,7 +8,6 @@ import com.secoo.mall.dubbo.monitor.dubbo.service.ProviderService; ...@@ -8,7 +8,6 @@ import com.secoo.mall.dubbo.monitor.dubbo.service.ProviderService;
import com.secoo.mall.dubbo.monitor.dubbo.service.RegistryServerSync; import com.secoo.mall.dubbo.monitor.dubbo.service.RegistryServerSync;
import com.secoo.mall.dubbo.monitor.dubbo.service.impl.ProviderServiceImpl; import com.secoo.mall.dubbo.monitor.dubbo.service.impl.ProviderServiceImpl;
import com.secoo.mall.dubbo.service.ServletConnectShoutDownHock;
import com.secoo.mall.dubbo.swagger.annotations.EnableDubboSwagger; import com.secoo.mall.dubbo.swagger.annotations.EnableDubboSwagger;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment