我在哪里可以获得命令行参数的句柄?
例如grunt dist --env=UAT.我如何获得价值env?
当我在它的时候,如果没有在命令行上设置,我将如何为此分配默认值?
我有一个单例bean,它有一个创建原型bean实例的方法.我正在使用此处记录的方法来获取原型bean的实例.
public class SingletonService implements ApplicationContextAware {
private ApplicationContext applicationContext;
public void go() {
MyPrototypeBean prototype = applicationContext
.getBean(MyPrototypeBean.class);
prototype.doSomething();
}
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.applicationContext = applicationContext;
}
}
Run Code Online (Sandbox Code Playgroud)
起初我认为这很好,当'go'方法返回时,我的'prototype'实例将超出范围,这意味着实例将没有引用并且将被垃圾收集.
但是,同行指出文档中的以下声明:
客户端代码必须清理原型范围的对象并释放原型bean所持有的昂贵资源.
所以听起来Spring会保留一个引用,所以gc永远不会把它拿起来?如果是这样的话,我如何告诉Spring发布引用?该文档提到我可以使用"自定义bean后处理器",但不清楚该处理器适合的位置以及它将运行的代码.
感谢所有人提前帮忙,罗伊
我知道Tomcat和Servlet规范不支持按特定顺序启动Web应用程序.
然而,在我看来,这似乎是一个常见的用例,我想知道是否有人发现了一个聪明的解决方法.
我有webapp A,它使用Spring Remoting来公开共享服务,其中webapp B是一个客户端.除非webapp A正在运行,否则Webapp B无法初始化.但是,我的Tomcat始终是线性启动webapps,从webapp B开始.
出于基础结构的原因,我必须在同一个Tomcat服务器上运行它们.
有任何想法吗?
谢谢,罗伊
更新 -
事实证明,在我的特定情况下,订单无关紧要.原因是这样的:假设我使用下面的方法之一在应用程序B之前启动应用程序A.所以应用程序A启动,但是,由于Spring远程处理正在使用HTTP Invoker,HTTP端口尚未打开(它将无法打开直到所有应用程序都启动).所以A将开始,B将挂起,因为它正在寻找的端口尚未可用.卫生署.
最终结果是两个单独的Tomcat实例.
Camel显式处理错误处理的两个"范围":
我遇到的问题是在"子路线"中抛出的异常.例如,我有这条路线:
from("direct:sendToWebservice").
.processRef("massageBeforeSending").
.to("http://webservice.com").
.processRef("massageResponse");
Run Code Online (Sandbox Code Playgroud)
然后我有两个需要向web服务发送消息的其他路由:
from(direct:fromSystemA").
.errorHandler(deadLetterChannel("direct:TellSystemA")).
.to("direct:sendToWebservice");
from(direct:fromSystemB").
.errorHandler(deadLetterChannel("direct:TellSystemB")).
.to("direct:sendToWebservice");
Run Code Online (Sandbox Code Playgroud)
我想要发生的是,如果webservice路由抛出异常,它会传播到调用者,系统A或系统B将被通知.我没有看到实现这一目标的方法.
我觉得这将是一个常见的用例 - 有人曾经碰过它吗?
感谢你的宝贵时间,
罗伊
简单的我希望..
这是一个参考的plunker.
我知道如何在编译时指定依赖项(请参阅MainCtrlInjected控制器).但是,如何在运行时下拉依赖项,给出该依赖项的名称?(参见MainCtrlInjectedRuntime控制器)
我正在使用ng-show一个解析为一个解析为布尔值的promise的表达式.当我这样做时,我得到10个摘要迭代溢出.
请参阅http://plnkr.co/edit/XibYM0kCnXhKjNUeTsp3?p=preview
<body ng-controller="MainCtrl">
<p ng-show="returnsABoolean()">non promise</p>
<p ng-show="returnsAPromiseThatResolvesToABoolean()">promise</p>
</body>
Run Code Online (Sandbox Code Playgroud)
按Ctrl:
$scope.returnsABoolean = ()->
true
$scope.returnsAPromiseThatResolvesToABoolean = ()->
$q.when(false)
Run Code Online (Sandbox Code Playgroud)
我知道这{{somePromise}}会解决,但{{returnsAPromiseThatResolvesToABoolean()}}似乎会导致同样的问题.
有任何想法吗?我希望这可行..
Angularjs通过FormController(例如跟踪原始,脏等)运行我的表格.我不需要这个功能; 我确定这会增加我的开销$digests.
我怎么能把它关掉?
我不希望$ exceptionHandler处理任何异常 - 我希望它们能够推进到浏览器(主要用于Visual Studio中的IE测试).
我试过覆盖$ exceptionHandler并简单地重新抛出错误,这给了我10次迭代$ digest错误(这是有意义的).
我该如何完全关闭它?
编辑
不幸的是,重新抛出错误并没有解决问题 - IE只知道重新抛出的错误,而不是来自源.
我的路线中有一个重复的模式 - 每次调用时,某个处理器需要相同的3个Header设置,所以我的路由中有以下代码大约10次以上:
.whatever()
.setHeader("foo1", "bar1")
.setHeader("foo2", "bar2")
.setHeader("foo3", "bar3")
.processRef("processorBazThatNeedsHeaders")
.whatever()
Run Code Online (Sandbox Code Playgroud)
每次都会以不同的方式填充标题,因此将其抽象为子路径并不能真正为我买任何东西.
我喜欢能够做的是将RouteDefinition子类化为在我的DSL中使用另一种方法来允许我这样做:
.whatever()
.bazProcessor("bar1", "bar2", "bar3")
.whatever()
Run Code Online (Sandbox Code Playgroud)
在'bazProcessor'中,设置标题并调用处理器.
我试图做到这一点,但似乎只有一些严重的可能不会用于未来的手术,并且似乎其他人也有类似的运气.
我需要将它们设置为标题,而不是将它们作为参数直接传递给处理器,因为这些值也在处理器之后用于路由.
是否有一些隐藏的设施来实现这样的目标?
假设我的grunt配置中有一个变量,数组作为值.一个真实世界的例子grunt.regarde.changed来自grunt-regarde插件,它列出了所有已更改的文件.
我想使用模板解析该数组,以便我可以(在这种情况下)复制更改的文件:
copy: {
staticWeb: {
src: '<%= grunt.regarde.changed %>',
dest: 'someDir'
},
Run Code Online (Sandbox Code Playgroud)
什么src得到在这种情况下是一个单一的逗号分隔的字符串,而不是一个数组.Grunt的文件处理器不解析字符串,因此无法找到src文件.
我无法删除模板周围的单引号,因为它是无效的javascript.
那么如何将该grunt.regarde.changed数组传递给src变量呢?