代码之家  ›  专栏  ›  技术社区  ›  somename

ratpack中的非阻塞处理程序代码不工作

  •  1
  • somename  · 技术社区  · 7 年前

    this blogpost 这演示了在ratpack中阻塞处理程序,但我无法使其工作。我正在获取背景的缺失方法异常。

    我的身材。gradle文件如下 this GitHub directory

    buildscript {
        repositories {
        maven { url "http://oss.jfrog.org/artifactory/repo" }
        jcenter()
      }
      dependencies {
        classpath 'io.ratpack:ratpack-gradle:0.9.4'
      }
    }
    
    apply plugin: "ratpack-groovy"
    apply plugin: "idea"
    apply plugin: "eclipse"
    
    repositories {
      maven { url "http://oss.jfrog.org/artifactory/repo" }
      jcenter()
      maven { url "http://repo.springsource.org/repo" }
      maven { url "https://nexus.codehaus.org/content/repositories/snapshots/" }
    }
    
    dependencies {
      springloaded "org.springsource.loaded:springloaded:1.1.5.RELEASE"
    
      testCompile "org.spockframework:spock-core:0.7-groovy-2.0", {
          exclude module: "groovy-all"
      }
    }
    
    // The Groovy that rest-assured drags in via ratpack-groovy-test is toxic, prevent it from coming in
    // This should be fixed upstream in Ratpack
    configurations.testCompile.dependencies.find { it.name == "ratpack-groovy-test" }.exclude(group: "org.codehaus.groovy")
    

    import static ratpack.groovy.Groovy.ratpack
    
        ratpack {
            handlers {
                get("non-blocking") {
                    background {
                        Thread.sleep(10000)
                    }.then{
                        response.send()
                    }
                }
            }
        }
    

    我正在获取背景的缺失方法异常。

    groovy.lang.MissingMethodException: No signature of method: nonBlocking.background() is applicable for argument types: (nonBlocking$_run_closure1$_closure2$_closure3$_closure4) values: [nonBlocking$_run_closure1$_closure2$_closure3$_closure4@497352d0]
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:81)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
        at 
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   rus    7 年前
        2
  •  1
  •   Szymon Stepniak    7 年前

    3.5-rc-2 版本和do

    ./gradlew test
    

    它将失败,并出现以下错误:

    FAILURE: Build failed with an exception.
    
    * Where:
    Build file '/home/wololock/workspace/idea/stackoverflow-answers/46009278/build.gradle' line: 11
    
    * What went wrong:
    A problem occurred evaluating root project '46009278'.
    > Failed to apply plugin [id 'ratpack-groovy']
       > Could not find method groovy() for arguments [DefaultExternalModuleDependency{group='io.ratpack', name='ratpack-groovy', version='0.9.4', configuration='default'}] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    

    现在,如果我们看看这个例子开发时使用了什么Gradle版本,我们会发现它使用了Gradle 1.10 gradle-wrapper.properties 文件:

    #Sun Jul 21 19:00:37 CDT 2013
    distributionBase=GRADLE_USER_HOME
    distributionPath=wrapper/dists
    zipStoreBase=GRADLE_USER_HOME
    zipStorePath=wrapper/dists
    distributionUrl=http\://services.gradle.org/distributions/gradle-1.10-bin.zip
    

    如果定义相同的Gradle包装器版本并执行以下操作:

    ./gradlew试验
    

    ./gradlew runFatJar
    

    10:39:44: Executing external task 'runFatJar'...
    The groovy configuration has been deprecated and is scheduled to be removed in Gradle 2.0. Typically, usages of 'groovy' can simply be replaced with 'compile'. In some cases, it may be necessary to additionally configure the 'groovyClasspath' property of GroovyCompile and Groovydoc tasks.
    :compileJava UP-TO-DATE
    :compileGroovy UP-TO-DATE
    :processResources UP-TO-DATE
    :classes UP-TO-DATE
    :fatJar
    wrz 02, 2017 10:39:48 AM ratpack.server.internal.NettyRatpackServer start
    INFO: Ratpack started for http://localhost:5050
    :runFatJar
    Sat Sep 02 10:40:40 CEST 2017 - received blocking request
    Sat Sep 02 10:40:50 CEST 2017 - replying blocking request
    Sat Sep 02 10:40:50 CEST 2017 - received non-blocking request
    Sat Sep 02 10:41:00 CEST 2017 - replying non-blocking request
    
    推荐文章