StackOverflow上有很多类似的问题,但我找不到任何答案:(
我有web.xml像:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-security.xml
</param-value>
</context-param>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-web.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
并尝试使用注释配置方法安全性.正如我所看到的,必须在我的情况下完成<sec:global-method-security pre-post-annotations="enabled"/>,与其他组件放在相同的上下文中spring-web.xml.所以我有以下内容spring-web.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sec="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd"
default-autowire="byName">
<context:component-scan base-package="com.cleanplates.apiserv"/>
<sec:global-method-security pre-post-annotations="enabled"/>
</beans>
Run Code Online (Sandbox Code Playgroud)
并且spring-security.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sec="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy">
<sec:filter-chain-map path-type="ant">
<sec:filter-chain pattern="/**"
filters="
usernamePasswordProcessingFilter,
rememberMeFilter,
anonymousProcessingFilter, …Run Code Online (Sandbox Code Playgroud) 我有以下通量:
Flux.range(0, 100)
.log("before window")
.window(10)
.map(Flux::toList)
.log("after window")
.map((w) -> {
System.out.println(w.subscribe().get()));
return 1;
})
.reduce(0, (a, b) -> a + b)
.doOnSuccess(System.out::println)
.subscribe();
Run Code Online (Sandbox Code Playgroud)
我想doOnNext此刻我应该能够获得物品块。但.get总是因Timeout on Mono blocking read异常而失败。
我从日志中看到,之前都已处理过.window,结果日志给出:
[ main] before window : onNext(0)
[ main] after window : onNext({ operator : "BufferAll" })
Run Code Online (Sandbox Code Playgroud)
官方文档中没有那么多信息,所以我想我误解了一些东西,并且window错误地使用了函数。但我到底做错了什么?
更新
我发现如果我改用可以避免这个特殊问题.doOnSuccess。喜欢:
.map((w) -> {
w.doOnSuccess((w2) -> System.out.println(w2))).subscribe();
return 1;
}
Run Code Online (Sandbox Code Playgroud)
但真正的问题是,在我的情况下,我需要根据对提供的数据(而不是1)的一些计算来返回一个数字。我可以Mono在这里创建一个新的,但无论如何,以后我应该.get这样做。例如在 final 中 …
我的 Gradle 配置中有以下内容:
dependencies {
implementation "org.slf4j:slf4j-api:1.7.32"
implementation "org.apache.logging.log4j:log4j-slf4j-impl:2.15.0"
implementation "org.slf4j:jul-to-slf4j:1.7.32"
implementation "org.slf4j:jcl-over-slf4j:1.7.32"
constraints {
add("implementation", "org.apache.logging.log4j:log4j-core") {
version {
strictly("[2.15")
prefer("2.15.0")
}
because("CVE-2021-44228 Log4j 2 Vulnerability")
}
add("implementation", "org.apache.logging.log4j:log4j-api") {
version {
strictly("[2.15")
prefer("2.15.0")
}
because("CVE-2021-44228 Log4j 2 Vulnerability")
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然此配置不直接依赖于 log4j,但它对 log4j 有一些暂时依赖。我预计它将强制使用 2.15.0 或更高版本。
但不幸的是它并没有改变任何东西:
$ gradle dependencies | grep log4j
+--- org.apache.logging.log4j:log4j-slf4j-impl:2.15.0
| \--- org.apache.logging.log4j:log4j-api:2.15.0 -> 2.13.3
.....
+--- org.apache.logging.log4j:log4j-api:{strictly [2.15; prefer 2.15.0} -> 2.13.3 (c)
\--- org.apache.logging.log4j:log4j-core:{strictly [2.15; prefer 2.15.0} -> 2.13.3 (c) …Run Code Online (Sandbox Code Playgroud) 我正在尝试从javascript(谷歌浏览器扩展程序)到我的谷歌应用程序进行简单的POST我可以看到HTTP POST确实被发送到GAE服务器,但我无法想象如何传输简单的文本字符串,并在谷歌应用程序中使用它.
目标:使用xmlhttpRequest从javascript发送字符串,在google-app网页上显示此字符串.
这是javascript的代码:
function onRequest(request, sender, sendResponse) {
var url = request;
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://myapp.appspot.com");
xhr.send(url);
// Return nothing to let the connection be cleaned up.
sendResponse({});
};
Run Code Online (Sandbox Code Playgroud)
这是我如何处理服务器端的帖子:
def post(self):
url1 = str(self.request.get('url1'))
self.response.headers['Content-Type'] = 'text/html'
self.response.out.write('<p>URL is: %s</p>' % url1)
Run Code Online (Sandbox Code Playgroud)
当我看到POST响应时,我看到了
<p>URL is: </p>
Run Code Online (Sandbox Code Playgroud)
发送的var url在哪里?
javascript ajax google-app-engine google-chrome google-chrome-extension
我有一个基本的应用程序,当我grails run-app运行它时工作正常,我想用它来运行它grails run-war.但是java.lang.OutOfMemoryError: PermGem space,在任何请求之后,我总是在开始之后得到着名的tomcat 错误.
嗯,我知道我需要改变PermSize价值,所以我想,我已经在Google上搜寻后发现(所有的方法JAVA_OPTS,GRAILS_OPTS和grails.tomcat.jvmArgs),现在我有以下脚本:
export JAVA_OPTS="-Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m"
export GRAILS_OPTS="-Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m"
grails -Dgrails.tomcat.jvmArgs="-Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m" run-war
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.仍然有java.lang.OutOfMemoryError: PermGen space第一次请求.
我做错了什么?有没有其他方法可以配置PermSizeGrails 2.0.1?
更新:我跑了ps -ef | grep java,发现Grails实际上得到了我的参数,但后来它运行了一个新的进程,对于tomcat,没有这个参数.
我正在尝试使用进行http请求的集成测试来测试我的grails应用程序.实际上它是硒/碲测试,但没关系.但正如我所看到的,当我运行grails测试时,它不会启动Web容器,同时我在博客文章中看到很多例子,人们使用selenium和其他需要http访问的测试工具来测试grails app.
我创建了一个空的grails应用程序:
mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-4:generate -DarchetypeGroupId=org.grails -DarchetypeArtifactId=grails-maven-archetype -DarchetypeVersion=1.3.4 -DgroupId=example -DartifactId=testportapp
cd testportapp/
mvn initialize
mvn grails:test-app
Tests PASSED - view reports in target/test-reports
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
Run Code Online (Sandbox Code Playgroud)
没关系.
现在添加一个尝试连接到grails的集成测试test/integration/ListenPortTest.groovy:
class ListenPortTest extends GroovyTestCase {
void testPort(){
def s = new Socket("localhost", 8080);
s.close()
}
}
Run Code Online (Sandbox Code Playgroud)
并再次运行测试.现在我们收到以下异常:
Connection refused
java.net.ConnectException: Connection refused
....
Run Code Online (Sandbox Code Playgroud)
我也使用浏览器,wget和netstat检查了它,看起来像grails没有启动或没有打开任何端口.
问题是:在执行集成测试时,如何配置grails来打开端口?
我在Maven repo上有一个作为jar发布的库,这个lib为用户对象提供了一些Groovy DSL.是否有可能为这个lib 提供IntelliJ GDSL?
我的意思是,把它放在罐子里面的META-INF或者Maven的里面pom.xml,它会被IntelliJ IDEA自动处理和使用?
有没有什么方法可以为Eclipse做类似的事情?
我正在使用python和谷歌应用程序引擎开发的应用程序,但是当我尝试自定义此应用程序时,它在前一代码中给出了编译时错误,该代码在live上正常运行.代码是:
if version in ['beta', 'alpha'] :
type=version
version = memcache.get(type)
if not version:
v = RouterVersions.get_by_key_name(type)
if not v :
logging.error('No version found in RouterModel for %s', type)
self.error(404)
return;
version = v.version
memcache.add(v.type, version)
Run Code Online (Sandbox Code Playgroud)
当我使用memcache.add或获取属性时,它会给出编译时错误"来自import get的未定义变量".我不知道为什么会这样.我是python和谷歌应用引擎的新手.我的应用程序是在python 2.5中创建的,我现在使用的是2.7.这是问题还是其他什么?
我有以下内容main.js:
requirejs.config({
paths: {
'backbone': 'backbone-min',
'underscore': 'underscore-min',
'loader': 'loader-min'
}
})
Run Code Online (Sandbox Code Playgroud)
这个'loader-min.js'文件只是一个优化的 js来自loader.js:
define(['backbone', 'underscore'], function () {
})
Run Code Online (Sandbox Code Playgroud)
我的HTML页面包含以下内容:
<script data-main="/js/main" src="/js/require.js"></script>
<script type="text/javascript">
requirejs(['loader'], function(loader) {
....
})
</script>
Run Code Online (Sandbox Code Playgroud)
顺便说一下,正如我在Firebug控制台上看到的那样,浏览器只跟随网址加载:
GET /js/require.js
GET /js/main.js
GET /js/loader.js !!! Notice it's loader.js, not loader-min.js
GET /js/backbone-min.js
GET /js/underscore-min.js
Run Code Online (Sandbox Code Playgroud)
因此,模块loader尝试加载文件loader.js而不是路径配置的问题main.js.未缩小/优化文件,忽略requirejs.config值.
最奇怪的是,它仍然使用正确值backbone和underscore.大多数情况下,但不是所有时间.有时它加载失败/js/backbone.js
似乎RequireJS在main.js完全加载并由浏览器解释之前就开始工作了.这是预期的行为吗?我的应用程序有什么问题?
我怎样才能确保requirejs(...)只在处理'main.js'之后才执行该功能?
我有html内容,如:
<button class="submit">Save</button>
Run Code Online (Sandbox Code Playgroud)
并查看如下:
var MyView = Backbone.View.extend({
events: {
'click .submit': 'save'
},
save: function() {}
}
Run Code Online (Sandbox Code Playgroud)
当我点击此按钮时,我发现骨干网不会处理此事件,而是进行标准的浏览器操作(至少在Chrome上).<a>标签相同.我的意思是Backbone没有绑定这个标签.
目前我<span>用于按钮,它工作正常,但我想知道为什么我不能使用按钮的标准标签?如何删除标准浏览器事件,并使用骨干<a>或<button>