小编Mat*_*w S的帖子

如何使用Springboot向控制器实现异步REST请求?

我正在尝试使用SprintBoot实现异步控制器.我想向控制器发出REST请求,以便控制器立即返回,同时在服务器上继续工作.

我正在关注这个Spring示例:http://spring.io/blog/2012/05/07/spring-mvc-3-2-preview-introducing-servlet-3-async-support

我怀疑这是一个配置问题.有人可以告诉我我错过了什么吗?我是Spring的新手,所以如果你能提供尽可能多的详细信息,我们将不胜感激.

使用工作控制器我做了以下更改:

// Before
@RequestMapping(method=RequestMethod.POST)
public String processUpload(final MultipartFile file) {
    // ...
    return "someView";
}

// After
@RequestMapping(method=RequestMethod.POST)
public Callable<String> processUpload(final MultipartFile file) {

  return new Callable<String>() {
    public Object call() throws Exception {
      // ...
      return "someView";
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

我可以调用新的控制器,但我有以下两个问题:

  1. 不会异步调用新控制器.浏览器中的浏览器挂起.该调用确实执行代码.
  2. 请求超时时出现此错误:

    2015-03-06 16:36:10.592 ERROR 13012 --- [MvcAsync1] oswcrequest.async.WebAsyncManager:由于超时或网络错误导致无法完成异步处理

更新: 我能够通过在我的应用程序文件中创建以下bean来解决超时问题:

@Bean
public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
        factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {

            @Override
            public void customize(Connector connector) {

                connector.setPort(9000);
                connector.setAsyncTimeout(60000); …
Run Code Online (Sandbox Code Playgroud)

asynchronous spring-boot

11
推荐指数
1
解决办法
3万
查看次数

Powershell模块设计 - Export-ModuleMember

我正在构建一个模块,用于导出我想通过我的个人资料提供的cmdlet.此cmdlet的实现分布在多个实现文件中,这些文件包含我不想公开的实现函数.所以我使用Export-ModuleMember来隐藏它们.

get_something.psm1

import-module .\get_something_impl.psm1

function Get-Something {
    [cmdletbinding()]
    Get-SomethingImplementation
}

Export-ModuleMember -Function Get-Something
Run Code Online (Sandbox Code Playgroud)

然后我将get_something.psm1添加到我的个人资料中.通过仅导出Get-Something,我的所有实现功能都保持"私有".

我遇到的问题是,当使用Export-ModuleMember命令时,每次我需要一个函数时,我必须在我的实现文件中导入一个模块.例如,假设我有一个模块person.psm1,其中包含我需要在所有实现文件中调用的函数Get-Person.现在我必须在每个需要调用Get-Person的文件中导入person.psm1.这是使用Export-ModuleMember -Function Get-Something的结果.没有它,我只需要导入person.psm1一次,它就可用了.

实质上,Export-ModuleMember不仅阻止我的实现到外部,它还阻止了我自己的实现.

这是预期的,并被认为是设计Powershell模块的正常方面吗?

powershell function powershell-module

7
推荐指数
1
解决办法
6511
查看次数

Golang Gorm:是否可以通过many2many关系删除记录?

我有一个类似于GORM的例子的许多结构:

// User has and belongs to many languages, use `user_languages` as join table
type User struct {
    gorm.Model
    Languages         []Language `gorm:"many2many:user_languages;"`
}

type Language struct {
    gorm.Model
    Name string
}

db.Model(&user).Related(&languages)
Run Code Online (Sandbox Code Playgroud)

假设我创建了一个用户,它有两种相关的语言.

我从数据库中获取用户记录,并从用户的Languages数组中删除一种语言.然后我用gorm保存用户:save_associations设置为true.

我希望GORM删除将用户与该语言相关联的记录(在GORM管理的关联表中).但是,它不会被删除.这是预期的吗?

是否可以通过从用户记录的"语言"列表中删除语言然后保存用户来删除many2many关联记录?如果没有,应该如何在GORM中完成?

更新

我找到了这个问题的解决方案,但不确定这是最好的方法.我存储当前语言,清除所有关联,然后添加语言,然后保存.

languages := user.Languages
DB.Model(&user).Association("Languages").Clear()
user.Languages = languages
Run Code Online (Sandbox Code Playgroud)

go go-gorm

7
推荐指数
3
解决办法
3804
查看次数

Powershell:使用ScriptBlock :: Invoke时如何获取异常行号

在此示例中,如何获取引发异常的行号?下面的示例仅提供了我在其中调用脚本块的行号(即$ sb.Invoke())。我想要将“ FooBar中的错误”抛出的行号。

function Foobar {
    throw "Error in FooBar"
}

function Bar {
    FooBar
}

function Foo {
    Bar
}

try {
        $sb = ${function:Foo}
        $sb.Invoke()
    }
catch {
    $ErrorMessage = $_.Exception.Message
    $line = $_.InvocationInfo.ScriptLineNumber
    $script_name = $_.InvocationInfo.ScriptName
    write-host "<--Error: Occurred on line $line in script $script_name." 
    Write-host "<--Error: $ErrorMessage"
}
Run Code Online (Sandbox Code Playgroud)

更新:

如果我更改:

$sb = ${function:Foo}
$sb.Invoke()
Run Code Online (Sandbox Code Playgroud)

对此:

$func_info = get-command Foo
Invoke-Command $func_info.ScriptBlock
Run Code Online (Sandbox Code Playgroud)

有用。

powershell-4.0

5
推荐指数
1
解决办法
2116
查看次数

如何将所有内部 Springboot 日志记录定向到 log4j?

我希望将所有内部 Springboot 日志消息定向到 log4j,以便消息遵循我的 log4j 属性(即它们使用我的布局转到控制台和我的 log4j 文件)。

我尝试根据本指南将 Springboot 配置为仅使用 log4j 日志记录:http : //spring.io/blog/2009/12/04/logging-dependencies-in-spring/

我已成功设置 log4j 以在使用 log4j 记录器对象时登录到控制台和文件。

但是,似乎 Springboot 在内部登录时仍在使用 slf4j。我尝试删除 slf4j 依赖项,但 Springboot 因缺少类异常而无法启动。

如何将所有内部 Springboot 日志记录定向到 log4j?

spring log4j spring-boot

4
推荐指数
1
解决办法
1460
查看次数