我似乎无法找到一种方法来强制在启动Web应用程序时实例化/初始化应用程序范围的托管bean.似乎应用程序范围的bean在第一次访问bean时会进行惰性实例化,而不是在启动Web应用程序时实例化.对于我的Web应用程序,当第一个用户第一次在Web应用程序中打开页面时,就会发生这种情况.
我想避免这种情况的原因是因为在我的应用程序范围的bean初始化期间发生了许多耗时的数据库操作.它必须从持久存储中检索一堆数据,然后以ListItem元素等形式缓存一些频繁显示给用户的数据.我不希望在第一个用户连接时发生这一切,因此导致长时间的延迟.
我的第一个想法是使用旧式ServletContextListener contextInitialized()方法,并从那里使用ELResolver手动请求我的托管bean的实例(从而强制初始化发生).不幸的是,我无法在此阶段使用ELResolver来触发初始化,因为ELResolver需要FacesContext并且FacesContext仅在请求的生命周期内存在.
有没有人知道另一种方法来实现这一目标?
我使用MyFaces 1.2作为JSF实现,目前无法升级到2.x.
我想在初次启动时向用户提供一个教程向导.
有没有办法UIViewController在应用程序启动时呈现模态,而不至少看到毫秒,它rootViewController背后呢?
现在我正在做这样的事情(为了清楚起见省略了首次启动检查):
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// ...
UIStoryboard *storyboard = self.window.rootViewController.storyboard;
TutorialViewController* tutorialViewController = [storyboard instantiateViewControllerWithIdentifier:@"tutorial"];
tutorialViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.window makeKeyAndVisible];
[self.window.rootViewController presentViewController:tutorialViewController animated:NO completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)
没有运气.我试图[self.window makeKeyAndVisible];在[... presentViewController:tutorialViewController ...]声明之前 移动,但随后模态甚至没有出现.
主管在3.0上运行:
pip freeze | grep supervisor
supervisor==3.0
Run Code Online (Sandbox Code Playgroud)
从命令行启动supervisord时:
sudo $VIRTENV/supervisord --nodaemon --configuration $PATH_TO_CONFIG/supervisord.conf
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
2013-11-11 23:30:50,205 CRIT Supervisor running as root (no user in config file)
Run Code Online (Sandbox Code Playgroud)
但是如果没有sudo我就无法启动监督,它抱怨道:
Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)
Run Code Online (Sandbox Code Playgroud)
处理它的正确方法是什么?
(如果以root用户身份启动它,但在supervisord.conf的[supervisord]部分下设置user = foobar,则会出现同样的错误)
更新:这是我的supervisord.conf
[unix_http_server]
file = /opt/run/supervisord.sock
[inet_http_server]
port = 9001
username = foobar
password = foobar
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisord]
logfile = /opt/logs/supervisord.log
loglevel = debug
pidfile = /opt/run/supervisord.pid
[supervisorctl]
[program:foo1]
user = foobar
autostart = …Run Code Online (Sandbox Code Playgroud) 为了加快JVM的启动时间,Sun开发人员决定在安装JVM期间为平台预编译标准运行时类是个好主意.这些预编译的类可以在以下位置找到:
$ JAVA_HOME\jre的\ BIN \客户端\ classes.jsa
我的公司目前开发了一个Java独立应用程序,它带来了自己的JRE,因此通过在这个jsa文件中添加我们自己的应用程序类来加速我们的应用程序启动时间是一个很棒的选择.
我不相信JSA文件是由魔术创建的,所以:它是如何创建的?如何欺骗JVM合并我自己的类?
编辑:我已经发现以下内容:
classes.jsa由命令创建
java -Xshare:dump
Run Code Online (Sandbox Code Playgroud)
可以在中找到要包含在转储中的类列表$JAVA_HOME/jre/lib/classlist.
我甚至设法在这里添加我自己的类(并将它们添加到rt.jar中以便java找到它们),并在classlist文件下面生成我自己的校验和.
最后一个问题是:只有java,com.sun和org.w3c包中的类似乎被识别,如果我在原始包中保留相同的类,它们将不会被加载.我在整个OpenJDK源代码中搜索了这个指针,但它似乎与保护域有关.如果有人对这个主题感兴趣并且知识渊博,请添加一些指示让我进一步调查.
我知道如何在 .NET 5(或之前版本)的 Startup.cs 中进行依赖项注入,但是如何对 .NET 6 中的顶级 Program.cs 执行相同的操作?
.NET 5:例如,我可以在Configure方法中注入一个类
public class Startup
{
public IConfiguration _configuration { get; }
public IWebHostEnvironment _env { get; set; }
public Startup(IConfiguration configuration, IWebHostEnvironment env)
{
_configuration = configuration;
_env = env;
}
public void ConfigureServices(IServiceCollection services)
{
// TODO
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IToInjectService serviceToInject)
{
// USE SERVICE
}
}
Run Code Online (Sandbox Code Playgroud)
如何在 .NET 6 中实现这一目标?
阅读ASP.NET Core的文档,有两种方法可以选择Startup:Configure和ConfigureServices.
这些似乎都不是放置我想在启动时运行的自定义代码的好地方.也许我想在我的数据库中添加自定义字段(如果它不存在),检查特定文件,将一些数据播种到我的数据库中等等.我想运行一次的代码,只是在应用程序启动时.
是否有一个首选/推荐的方法来实现这一目标?
当创建一个新的WPF应用程序项目MainWindow.xaml,App.xaml及其对应的隐藏类代码自动生成.在App.xaml这里有一个属性,它定义了最初要运行的窗口以及默认的窗口StartupUri="MainWindow.xaml"
我Dispatcher在同一个项目中创建了一个新类.在启动时,我希望Dispatcher构造该类的实例,然后运行其中一个方法.该方法实际上会创建并显示MainWindow窗口.那么我该如何修改App.xaml或App.xaml.cs为了实现它呢?或者,如果无法完成App,我该如何实施呢?谢谢.
在我看来,SpringBoot项目需要很长时间才能加载.这可能是因为SpringBoot正在为您配置组件,其中一些甚至可能不需要.最明显的事情是从类路径中删除不必要的依赖项.但是,这还不够.
有没有办法找出SpringBoot正在配置哪些模块来挑选你不需要的东西并禁用它们?
还有什么办法可以加快SpringBoot应用程序的启动时间吗?
可能重复:
如何将exe文件放在Windows启动中
假设我已经在C#中构建了一个应用程序,一旦我安装它,我希望它在Windows启动时在后台运行,或者你可以说用户登录到他的Windows帐户.有什么方法可以做到吗?写一个Windows服务除外?
应用程序基本上显示某个事件被触发时的消息谢谢
我在Ubuntu服务器14.04上使用sudo apt-get install zookeeper安装了Zookeeper.我无法理解如何配置Zookeeper在启动时自动启动.此外,我只能使用root权限手动启动它.
我查看了官方页面中的文档,似乎解决方案是确保在启动时运行zkServer.sh或类似的东西.我一直在寻找如何在Ubuntu上启动时执行脚本,并找到了一些方法:使用Upstart,使用System V,Cron作业甚至找到一个Python实用程序,一个灵魂共享用于监视进程并在崩溃时重新启动它们.鉴于我是Linux编程的初学者,花了太多时间在Windows上工作(在这种情况下它很容易解决!),所有看起来都有点复杂,不确定哪一个是最好的?
任何帮助都感激不尽.谢谢.
startup ×10
c# ×3
java ×2
.net ×1
asp.net-core ×1
boot ×1
class ×1
debian ×1
ios ×1
jsa ×1
jsf ×1
jvm ×1
managed-bean ×1
objective-c ×1
optimization ×1
python ×1
spring ×1
spring-boot ×1
supervisord ×1
ubuntu ×1
windows ×1
wpf ×1