假设我正在写一大块数据HttpServletResponse.所以我的方法接收一个字节数组,我写它response.getOutputStream(),然后我释放线程.当我收到另一块数据时,我的方法将被唤醒,它将getOutputStream()再次写入.最后,我打电话给AsyncContext.complete().
现在,WriteListener.onWritePossible()规范说:
第一次可以写入数据时,容器将调用此方法.当且仅当ServletOutputStream上的isReady方法(如下所述)返回false时,容器才会调用onWritePossible方法.
似乎当容器调用此方法时,我已经需要在某处缓冲我的响应,因为onWritePossible()可能永远不会再次调用.所以,对于前面的例子,我需要在缓冲区中写入我收到的所有数据块(一个字节数组,如果缓冲区足够大,可能是一个临时文件),如果onWritePossible()在我的响应完成之前调用,那么应该怎样我做?阻止线程,直到我有我的所有响应数据?
我有一个Spring 3.1应用程序。假设它具有包含以下内容的XML:
<context:property-placeholder location="classpath:somename.properties" />
<context:property-placeholder location="classpath:xxx.properties" />
Run Code Online (Sandbox Code Playgroud)
我希望始终加载some.properties(假设它存在),但是第二个占位符的xxx部分将根据活动的配置文件用某些名称替换。我已经试过了:
<beans profile="xx1">
<context:property-placeholder location="classpath:xx1.properties" />
</beans>
<beans profile="xx2">
<context:property-placeholder location="classpath:xx2.properties" />
</beans>
Run Code Online (Sandbox Code Playgroud)
此外,两个文件的属性均具有相同的键,但值不同。
但是它没有用,因为某些后来的Bean具有一个属性的占位符,该属性的键在xx1.properties(和xx2.properties)中定义,因此Spring抱怨说在应用程序上下文中找不到该键。
我正在使用内置Apache Sling的内容存储库(Adobe CQ5).我想使用FreeMarker而不是JSP来呈现网页.
为了实现这一点,我应该将OSGi Freemarker扩展上传到Sling,这可以在Sling源代码的贡献部分找到,或者我应该上传一个OSGi版本的Freemarker吗?两个jar都实现了接口javax.script.ScriptEngineFactory,所以我不知道要使用哪个,或者上传两者.
是否可以使用Groovy提供的增强的Collections方法,比如findAll和Collect with iterator(类java.util.Iterator)?
java ×2
aem ×1
freemarker ×1
groovy ×1
implicit ×1
scala ×1
scriptengine ×1
servlet-3.1 ×1
servlets ×1
sling ×1
spring ×1