求教,做javaweb应用的时候经常要重启tomcat,重启都需要一段时间,这样不是影响到

求教,做javaweb应用的时候经常要重启tomcat,重启都需要一段时间,这样不是影响到,第1张

如果只是修改页面文件(HTML或者JSP文件)是不需要重新部署和重启tomcat的。只有修改了Java代码才需要重新部署。至于要不要重启tomcat,看你的项目大小了。如果项目比较庞大,在本地测试久了就需要重启tomcat,释放内存。

es启动脚本是bin目录下的elasticsearch。其中需要加载一些环境变量,诸如ES_CLASSPATH JAVA_OPTS ES_JAVA_OPTS等。推荐设置ES_HEAP_SIZE的值,来这只es进程需要的内存(经验值为系统内存的一半以上),同时设置-p参数来指定pid文件的生成位置,在es关闭的时候会用到。

脚本内容不再赘述,java主类位于orgelasticsearchbootstrap。主要逻辑是生成了一个InternalNode节点,并且启动了一个keepalive线程。结点的启动代表整个es进程启动了。

InternalNode节点是通过NodeBuilder来生成的,节点在构造函数中通过ModuleBuilder类来进行模块的注入(是对Guice的一个封装而已),同时生成injector实例,如下

ModulesBuilder modules = new ModulesBuilder();

modulesadd(new VersionModule(version));

modulesadd(new CacheRecyclerModule(settings));

modulesadd(new PageCacheRecyclerModule(settings));

modulesadd(new BigArraysModule(settings));

modulesadd(new PluginsModule(settings, pluginsService));

modulesadd(new SettingsModule(settings));

modulesadd(new NodeModule(this));

modulesadd(new NetworkModule());

modulesadd(new ScriptModule(settings));

modulesadd(new EnvironmentModule(environment));

modulesadd(new NodeEnvironmentModule(nodeEnvironment));

modulesadd(new ClusterNameModule(settings));

modulesadd(new ThreadPoolModule(settings));

modulesadd(new DiscoveryModule(settings));

modulesadd(new ClusterModule(settings));

modulesadd(new RestModule(settings));

modulesadd(new TransportModule(settings));

if (settingsgetAsBoolean("httpenabled", true)) {

modulesadd(new HttpServerModule(settings));

}

modulesadd(new RiversModule(settings));

modulesadd(new IndicesModule(settings));

modulesadd(new SearchModule());

modulesadd(new ActionModule(false));

modulesadd(new MonitorModule(settings));

modulesadd(new GatewayModule(settings));

modulesadd(new NodeClientModule());

modulesadd(new BulkUdpModule());

modulesadd(new ShapeModule());

modulesadd(new PercolatorModule());

modulesadd(new ResourceWatcherModule());

modulesadd(new RepositoriesModule());

modulesadd(new TribeModule());

injector = modulescreateInjector();

在InternalNode的start方法中,用injector对各个模块完成启动,各自负责各自的功能,如下:

injectorgetInstance(Discoveryclass)setAllocationService(injectorgetInstance(AllocationServiceclass));

for (Class plugin : pluginsServiceservices()) {

injectorgetInstance(plugin)start();

}

injectorgetInstance(MappingUpdatedActionclass)start();

injectorgetInstance(IndicesServiceclass)start();

injectorgetInstance(IndexingMemoryControllerclass)start();

injectorgetInstance(IndicesClusterStateServiceclass)start();

injectorgetInstance(IndicesTTLServiceclass)start();

injectorgetInstance(RiversManagerclass)start();

injectorgetInstance(SnapshotsServiceclass)start();

injectorgetInstance(ClusterServiceclass)start();

injectorgetInstance(RoutingServiceclass)start();

injectorgetInstance(SearchServiceclass)start();

injectorgetInstance(MonitorServiceclass)start();

injectorgetInstance(RestControllerclass)start();

injectorgetInstance(TransportServiceclass)start();

DiscoveryService discoService = injectorgetInstance(DiscoveryServiceclass)start();

discoServicewaitForInitialState();

// gateway should start after disco, so it can try and recovery from gateway on "start"

injectorgetInstance(GatewayServiceclass)start();

if (settingsgetAsBoolean("httpenabled", true)) {

injectorgetInstance(HttpServerclass)start();

}

injectorgetInstance(BulkUdpServiceclass)start();

injectorgetInstance(ResourceWatcherServiceclass)start();

injectorgetInstance(TribeServiceclass)start();

至此,es进程启动完毕。

guice相关介绍可以参见以下链接:

关键点在于:

@inject注释---guice会扫描inject注释,并对方法中出现的参数实例寻找对应注册的实例进行初始化。

tomcat热部署只针对class文件,你修改其他文件确实不能自动热部署。

中间件启动的时候就装载好的文件只能重启tomcat了或通过tomcat manager来重载。

如果在程序中有通过流的形式读取文件的话,那么手动修改后重新触发读取动作,能生效。

你这种情况要么重启,要么把装载properties这些文件的动作改成代码来操作,而不是中间件启动时自动装载。

下面两篇文章可能会帮到你:

http://stackoverflowcom/questions/3573575/how-to-reload-properties-file-without-rebooting-tomcat

http://wikiapacheorg/tomcat/HowTo

链接里面有人介绍apache的common包里面有解决方案。

Tomcat服务器重启的办法:

第一步:使用cmd进入dos界面

第二步:进入Tomcat安装目录

C:\Users\AdministratorMS-201606131808>E:

E:\>cdapache-tomcat-8026-windows-x64\apache-tomcat-8026\bi

E:\apache-tomcat-8026-windows-x64\apache-tomcat-8026\bin>

到bin目录之后,先关闭原来运行的Tomcat服务器

第三步:关闭方法:执行shutdownbat指令

E:\apache-tomcat-8026-windows-x64\apache-tomcat-8026\bin>shutdownbat

UsingCATALINA_BASE:     "E:\apache-tomcat-8026-windows-x64\apache-tomcat-8026"

UsingCATALINA_HOME:    "E:\apache-tomcat-8026-windows-x64\apache-tomcat-8026"

UsingCATALINA_TMPDIR: "E:\apache-tomcat-8026-windows-x64\apache-tomcat-8026\temp"

UsingJRE_HOME:                "C:\ProgramFiles\Java\jdk180_31"

UsingCLASSPATH:              "E:\apache-tomcat-8026-windows-x64\apache-tomcat-8026\bin\bootstrapjar;E:\apache-tomcat-8026-windows-x64\apache-tomcat-8026\bin\tomcat-julijar"

E:\apache-tomcat-8026-windows-x64\apache-tomcat-8026\bin>

第四步:使用startupbat重新启动Tomcat服务器。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 求教,做javaweb应用的时候经常要重启tomcat,重启都需要一段时间,这样不是影响到

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情