我有一个Mongo文档,其中包含一系列元素.
我想重置.handled
数组中所有对象的属性.profile
= XX.
该文件采用以下形式:
{
"_id": ObjectId("4d2d8deff4e6c1d71fc29a07"),
"user_id": "714638ba-2e08-2168-2b99-00002f3d43c0",
"events": [{
"handled": 1,
"profile": 10,
"data": "....."
} {
"handled": 1,
"profile": 10,
"data": "....."
} {
"handled": 1,
"profile": 20,
"data": "....."
}
...
]
}
Run Code Online (Sandbox Code Playgroud)
所以,我尝试了以下内容:
.update({"events.profile":10},{$set:{"events.$.handled":0}},false,true)
Run Code Online (Sandbox Code Playgroud)
但是,它仅更新每个文档中第一个匹配的数组元素.(这是$的定义行为- 位置运算符.)
如何更新所有匹配的数组元素?
我学到的关于Java EE开发的第一件事就是我不应该在Java EE容器中生成我自己的线程.但是当我开始思考它时,我不知道原因.
你能清楚地解释为什么气馁吗?
我相信大多数企业应用程序都需要某种异步工作,如邮件守护进程,空闲会话,清理工作等.
因此,如果确实不应该生成线程,那么在需要时执行它的正确方法是什么?
我已经从JUnit3.8切换到JUnit4.4.我使用ant运行我的测试,所有测试都成功运行,但测试实用程序类失败并显示"No runnable methods"错误.我使用的模式是在测试文件夹下包含名称为*Test*的所有类.
我知道跑步者找不到任何用@Test属性注释的方法.但是它们不包含这样的注释,因为这些类不是测试.令人惊讶的是,当在eclipse中运行这些测试时,它并没有抱怨这些类.
在JUnit3.8中,它根本不是问题,因为这些实用程序类没有扩展TestCase,所以跑步者没有尝试执行它们.
我知道我可以在ant脚本中的junit目标中排除这些特定的类.但我不想在我添加的每个新实用程序类上更改构建文件.我也可以重命名课程(但是给课程好名字总是我最弱的人才:-))
这个问题有没有优雅的解决方案?
我们已经开始使用spring aop来实现我们应用程序的交叉切割(目前的安全性和缓存).
我的经理担心这项技术对性能的影响,尽管他完全理解这些技术带来的好处.
我的问题,您是否遇到过使用aop(特别是spring aop)引入的性能问题?
这个问题是关于Eclipse开发的,我试图在Eclipse中创建一个Web应用程序,问题是我没有将依赖关系jar放到已部署的存档中.
我创建了一个新的动态Web项目并将其链接到另一个Java项目.Java项目引用了一些第三方jar(例如Spring jar)但由于某些原因,在发布web项目时,我只获得了战争的lib目录中的Java项目jar,没有Java项目依赖项(例如Spring).
换句话说,我有项目A(Web项目),它依赖于项目B(Java项目),项目B依赖于Spring jar.当我将Web项目作为战争发布到JBoss时,只将项目B打包到jar中(没有弹簧罐)
我知道我可以用蚂蚁来做,我甚至有这样build.xml
的构建整个应用程序,但我认为eclipse也可以为我执行打包任务.
我将Java项目添加到Web项目中的Java EE模块依赖项中.
我应该在Java项目构建路径属性中使用导出选项吗?我是否应该将Java项目的依赖项添加到Web项目中?
我究竟做错了什么?
编辑:我正在使用Eclipse 3.5.1
我们已经迁移到JUnit 4和ant 1.7
测试在eclipse中运行良好,但在使用ant运行测试时会忽略注释.
根据Ant junit任务文档:
它也适用于JUnit 4.0,包括仅使用注释而不使用JUnit4TestAdapter的"纯"JUnit 4测试.
但是文档没有详细说明应该如何配置它.
junit任务是否需要特殊设置?我错过了什么吗?我们有两个测试扩展TestCase(即3.8样式)和"纯"Junit 4测试,这可能是问题吗?
我们已经开始在我的项目中使用Spring框架.在熟悉基本功能(IoC)之后,我们也开始使用弹簧和弹簧安全性.
问题是我们现在有超过8个不同的上下文文件,我觉得我们没有充分考虑这些文件及其角色的组织.随着项目的发展,引入了新文件.我们有不同的上下文文件:元数据,aop,授权,服务,Web资源(它是一个RESTful应用程序).因此,当开发人员想要添加新bean时,并不总是清楚他应该添加哪个文件.我们需要方法论.
问题:
Spring文件组织是否有最佳实践?
上下文文件是否应封装层(DAL,业务逻辑,Web)或用例?还是流量?
我们从JBoss 4(和JDK 5)升级到JBoss 5(和JDK 6).问题是开始时间从1.5分钟(在JBoss 4上)变为超过4分钟.
18:53:35,444 INFO [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221053)] Started in 3m:9s:262ms
Run Code Online (Sandbox Code Playgroud)
似乎JBoss最长时间初始化的组件是JMX
18:50:41,926 INFO [LogNotificationListener] Adding notification listener for logging mbean "jboss.system:service=Logging,type=Log4jService" to server org.jboss.mx.server.MBeanServerImpl@1adc122[ defaultDomain='jboss' ]
18:52:38,797 INFO [JMXConnectorServerService] JMX Connector server: service:jmx:rmi://lharel2/jndi/rmi://lharel2:1090/jmxconnector
Run Code Online (Sandbox Code Playgroud)
从DEBUG服务器日志中,我在有问题的时间得到这些行:
2009-12-18 18:51:00,886 DEBUG [org.jboss.deployment.MappedReferenceMetaDataResolverDeployer] (main) vfsfile:/C:/QC/Views/QCDev/jboss-5.1.0.GA/server/default/deploy/jmx-console.war/ endpoint mappings:
2009-12-18 18:51:00,886 DEBUG [org.jboss.deployment.MappedReferenceMetaDataResolverDeployer] (main) Processing unit=jmx-console.war, structure: jmx-console.war
2009-12-18 18:52:35,209 DEBUG [org.jboss.deployment.OptAnnotationMetaDataDeployer] (main) Deployment is metadata-complete, skipping annotation processing, ejbJarMetaData=null, jbossWebMetaData=org.jboss.metadata.web.spec.Web23MetaData@1f, jbossClientMetaData=null, metaDataCompleteIsDefault=false
Run Code Online (Sandbox Code Playgroud)
项目中没有EJB.
内存设置为:
-Xms128m -Xmx512m -XX:MaxPermSize=256m
Run Code Online (Sandbox Code Playgroud)
你知道如何改善JBoss的开始时间吗? …
您将如何设计RESTful查询以支持参数之间的OR操作数.假设我的资源有两个字段field1和field2.您将如何设计URL以启用以下查询:
"获取myresources where field1 = x OR field2 = y"
在REST中设计查询非常简单,但我只看到了查询字段之间支持AND的查询.例如/ myresource?field1 = x&field2 = y
一种可能的解决方案是提供单个查询参数,其中包含自由文本部分,例如:
GET/myresource?q = {field1 = x OR field2 = y}
但这会使客户端解析和扩展或减少过滤字段变得更加复杂.
你有什么建议?
我有一份以下表格的文件:
{
"_id" : ObjectId("4d2d8deff4e6c1d71fc29a07"),
"user_id" : "714638ba-2e08-2168-2b99-00002f3d43c0",
"events" : [
{
"profile" : 10,
"data" : "....."
}
{
"profile" : 10,
"data" : "....."
}
{
"profile" : 20,
"data" : "....."
}
...
]
}
Run Code Online (Sandbox Code Playgroud)
我想upsert
发表一些声明.它需要一个添加event
到events
阵列user_id
中的情况下,已经有这样的文档存在,否则就需要创建与该文档event
项.
可以这样做吗?