我正在开发一个GWT应用程序.它使用RPC从内部系统收集信息.它通过使用库jar来实现,我们称之为alpha.jar.我们在很多应用程序中都使用这个jar,所以它工作正常,并且它使用ANT构建,在Eclipse之外.
alpha.jar中的一些类引用了LOG4J2以及许多其他外部jar,因此当我们运行一个应用程序时,我们将一个类路径传递给所有这些,并且一切正常.请注意,这不是一个简单的初学者问题.alpha.jar正常工作,包括调用Log4J.
问题:
在Eclipse中,我有这个GWT应用程序项目以及Alpha.jar项目(当然还有源代码).服务器部分需要实例化alpha对象并与alpha系统通信.
通过向Alpha项目添加构建路径引用在GWT中执行此操作时,我的GWT应用程序运行正常.
当我代替项目引用include(在war/WEB-INF/lib中)alpha.jar并运行应用程序时,我第一次从alpha.jar实例化一个类时在标题中得到错误.
alpha.jar的构建方式没有什么特点,所以基本上它应该与eclipse中的项目相同,对吧?
请注意以下事项:
*)alpha.jar的依赖jar也在war/WEB-INF/lib中.log4j2-core,log4j-api以及其他一些(例如apache)
*)如果我删除alpha.jar(和调用它的代码),而只是添加调用LOG4J2的代码,该代码也可以正常工作!
为什么我在使用JAR时会遇到这个奇怪的错误?还要注意NoClassDefFoundError,它不是更常见的ClassNotFoundException.请参阅NoClassDefFoundError和ClassNotFoundException之间的原因和区别是什么?
如果您需要更多信息,请告诉我们.
我有一个问题,我认为这对溪流和/或lambdas来说是完美的.另一方面,我不想过度复杂化,但由于将在许多变体中使用这种特定技术(在子列表上运行函数),我想要一些关于如何从一开始就做到正确的想法.
我有一个List<Product> productList.
我希望能够遍历所有子列表productList.例如,大小= 30的所有子列表.然后,该子列表应该用作函数的参数.
这是我现在的,天真的解决方案:
List<Product> products=...
// This example uses sublists of size 30
for (int i = 0; i < products.size() - 29; i++) {
// sublist start index is inclusive, but end index is exclusive
List<Product> sublist = products.subList(i, i + 30);
Double res = calc(sublist);
}
// an example of a function would be moving average
Run Code Online (Sandbox Code Playgroud)
如何使用lambdas实现?
编辑我试图用最简单的例子来说明问题.经过一些评论,我意识到一个完美的例子是计算移动平均线.第一个MAVG在子列表[0..29]上计算,第二个在[1..30]上计算,第三个在[2..31]上计算,依此类推.
我有这个使用HikariCP连接池的代码:
config.setMaximumPoolSize(100);
config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
config.addDataSourceProperty("serverName", hostname);
config.addDataSourceProperty("port", portnumber);
config.addDataSourceProperty("databaseName", dbname);
config.addDataSourceProperty("user", username);
config.addDataSourceProperty("password", password);
config.setConnectionTimeout(30000);
config.setInitializationFailFast(false);
pooledDataSource = new HikariDataSource(config);
Run Code Online (Sandbox Code Playgroud)
我通过发出命令"Show Processlist"来监视mysql中的连接,我看到在行之后创建了100个连接:
pooledDataSource = new HikariDataSource(config);
Run Code Online (Sandbox Code Playgroud)
......正在运行.我敢肯定这不会发生,对吗?它应该在我执行pooledDataSource.getConnection()之后创建连接.
我究竟做错了什么?为什么要立即创建100个连接?
我正在研究使用ZeroMQ,并尝试了一些例子.但是,有一些重要的要求我无法验证ZeroMQ是否支持.我希望你能帮助我.
我会用这个简单的场景问我的问题:
出版商(比如交易所)提供(大量)股票的价格更新.N个客户订阅了1..n这些股票的价格更新.
我已经看过PUB/SUB功能,但是我无法验证过滤是在发布者还是订阅者端进行的?在上述用例中,除了发布者方面的过滤之外的任何内容都是我不能接受的.
但是我的调查告诉我,过滤仅在订户端可用,这意味着所有数据都被发送到订户,并在那里进行过滤.
我怀疑我完全错了,并且会很感激有关如何用ZeroMQ解决这种情况的任何指示
我正在评估install4j,因为我想为我们的Windows用户生成可执行文件.通常我们直接在Eclipse中运行我们的应用程序,或使用bash脚本.我们有一个大的jar包含整个框架以及我们的应用程序和一些依赖jar.在部署时,我们使用一个shellscript设置类路径,并使用其他shellcripts启动各个应用程序.
此过程适用于Linux,Mac和Windows.
现在我尝试安装install4j的演示版本,并且一直在努力创建安装程序.
现在的结果是我构建了一个运行的安装程序,并将生成的EXE和所有其他文件安装在它下面的目录结构中.
但是,启动生成的可执行文件并不能很好地工作.将显示演示对话框,然后一段时间后应用程序退出而不显示任何错误消息.
我的猜测当然是它崩溃了,可能是因为类路径不正确或类似的东西.
问题是,我一直在玩install4j中的选项几个小时没有任何行为改变,我现在在黑暗中.添加整个LIB目录,"扫描目录",单独添加罐子等.
有什么办法可以从生成的可执行文件中获取一些调试信息吗?或者任何信息都会出现问题?
我有一个java进程,它启动大约60个线程,每个线程访问一个MySql数据库.
使用像C3P0这样的连接池会有好处吗?或者它仅适用于Web应用程序(可扩展到许多用户)?
今天我们有长期存在的JDBC连接(每个线程一个),我的计划是在每次SQL查询/插入之前从连接池获取连接.
我想知道这是否会使我们的应用程序更稳定?另外,如果我将其配置为匹配数据库中的最大连接数,那么线程是否必须等到有空闲连接?文档不是很清楚(至少不适合我).
任何指导表示赞赏!
我正在创建一个具有 GUI 部分和 REST/JSON-API 的 Rails 应用程序。
REST/JSON API 相当简单,控制器返回如下数据:
def get_players
@players = Player.all
render json: @players
end
Run Code Online (Sandbox Code Playgroud)
应用程序的 GUI 部分使用 Devise 进行身份验证,并且工作正常。
现在我也想为 REST/JSON Api 添加身份验证,我该怎么做?
另外,添加身份验证后,如何使用 curl 测试 REST API?
- - 编辑 - -
事实证明,在这种情况下不需要设计。一种自制的令牌认证方法目前有效。(创建 Player 时创建的令牌,并在正确的电子邮件/密码组合中返回)。
我正在尝试在 Eclipse 中学习 Gradle。
是否有任何很好的集成,您可以在其中搜索要包含在项目中的 Jar?
现在,这是我这边的一次偶然性操作。
例子:
我想从 Apache Commons 添加 CLI 库。还有编解码器库。
我像这样添加了 jcenter() 和 mavenCentral:
repositories {
jcenter()
mavenCentral()
}
Run Code Online (Sandbox Code Playgroud)
我在依赖项部分尝试过这个(和变体):
compile 'org.apache.commons:cli:1.2'
compile 'org.apache.commons:codec:1.10'
Run Code Online (Sandbox Code Playgroud)
但我得到的只是
Could not resolve: org.apache.commons:cli:1.2
Could not resolve: org.apache.commons:codec:1.10
Run Code Online (Sandbox Code Playgroud)
在 search.maven.org 中搜索时,如果我在 org.apache.commons 上搜索,我会得到 111 页的点击量……我还没有找到时间逐一浏览它们。
在搜索 commons-cli 时,它找到了 2005 年的版本...加上一个名为的库
org.mod4j.org.apache.commons cli
Run Code Online (Sandbox Code Playgroud)
不知道“mod4”是什么意思。
结论是这些存储库中不存在 Apache 公共资源吗?
在这些情况下你是怎么做的?您如何提出正确的“编译”规范?
例如,我可以说“获取此 jar 的最新版本”吗?
很想有办法做到:
gradle search apache-commons --only-latest-version
Run Code Online (Sandbox Code Playgroud)
或类似的东西。类似于 Ruby 中美妙的 GEM/BUNDLE 命令。
感谢所有帮助
我希望能够检测到应用程序何时缺少LOG4J2.XML配置文件,并且在这种情况下设置一些其他默认值,而不是LOG4J2.
基本上,如果找不到配置文件,我想运行此代码:
// A default configuration that shows ALL Logger output, without a XML config!
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config = ctx.getConfiguration();
LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
loggerConfig.setLevel(Level.ALL);
ctx.updateLoggers(); // This causes all Loggers to refetch information from their LoggerConfig.
Run Code Online (Sandbox Code Playgroud)
如何检测LOG4J2无法加载配置?
这段代码片段来自plataformecs gem simple_form,wiki部分关于"添加自定义输入":
out << template.image_tag(object.send(attribute_name).tap {|o| break o.send(version) if version}.send('url'))
Run Code Online (Sandbox Code Playgroud)
问题只是代码在.tap {}之后阻塞了什么?特别是最初的"休息"对我来说很奇怪.
我正在使用Titanium Studio和Titanium SDK.在这种情况下,我正在为Android开发,但我也在OSX上安装了.
使用Alloy时,我可以指定
<Label class="header" id="someId">Week 50</Label>
Run Code Online (Sandbox Code Playgroud)
然后像这样在TSS文件中指定颜色,字体等
".header": {
color: "blue"
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用SDK版本时:
var l = Ti.UI.createLabel({class:"header", text:"sometext"});
Run Code Online (Sandbox Code Playgroud)
来自TSS文件的颜色没有被拿起???
我究竟做错了什么."班级"不是有效的财产吗?(我似乎无法在文档中找到它).
我们log4j2在我们的系统中广泛使用,并使用它进行配置log4j2.xml.
现在我需要一个运行的新应用程序,jobs我想分别捕获在时间X和Y之间产生的所有日志并将其放入数据库中.从我们的框架正常记录应该像往常一样(到文件或log4j2.xml指向的地方),但从时间X到时间Y.
我还希望捕获所有日志记录,最好是一个字符串列表或可以保存在数据库表中的东西.
我的想法是创建一个新的Appender(捕获所有日志输出)并动态添加/删除该appender以启动和停止日志记录?那会有用吗?我也可以在框架类中重新配置记录器吗?