小编Pra*_*lar的帖子

Spring批处理中的多个项目编写者

我正在编写一个Spring批处理,我正在读取一大块数据,处理它然后我希望将这些数据传递给2个编写器.一个编写器只是更新数据库,而第二个编写器将写入csv文件.

我打算编写自己的自定义编写器并在customItemWriter中注入两个itemWriters,并在customItemWriter的write方法中调用两个item编写器的write方法.这种方法是否正确?是否有任何符合我要求的ItemWriter实现?

提前致谢

java spring spring-batch

26
推荐指数
2
解决办法
3万
查看次数

使用Xpath表达式和jaxb解组XML

我是JAXB的新手,想知道是否有一种方法可以将XML解组为我的响应对象但使用xpath表达式.问题是我打电话给第三方网络服务,我收到的回复有很多细节.我不希望将XML中的所有细节映射到我的响应对象.我只希望从xml中映射一些细节,使用特定的XPath表达式将其映射到我的响应对象.是否有注释可以帮助我实现这一目标?

例如,考虑以下响应

<root>
  <record>
    <id>1</id>
    <name>Ian</name>
    <AddressDetails>
      <street> M G Road </street>
    </AddressDetails>
  </record>  
</root>
Run Code Online (Sandbox Code Playgroud)

我只对检索街道名称感兴趣所以我想使用xpath表达式使用'root/record/AddressDetails/street'获取street的值并将其映射到我的响应对象

public class Response{
     // How do i map this in jaxb, I do not wish to map record,id or name elements
     String street; 

     //getter and setters
     ....
}   
Run Code Online (Sandbox Code Playgroud)

谢谢

java xpath jaxb unmarshalling

16
推荐指数
2
解决办法
2万
查看次数

当用户从电子邮件客户端拖放附件时,上传失败

我正在使用valums fileuploader使用jQuery在我的应用程序中实现拖放功能.功能正常运行,直到其中一个用户尝试以下操作.

用户收到了附件的电子邮件.他试图将附件直接从电子邮件客户端(Outlook)拖放到浏览器和放置区域.上传失败.但是当他将文件保存到他的文件系统中然后拖放文件时上传成功了.

任何人都可以让我知道当用户直接从电子邮件拖动附件时后台会发生什么?它是否将文件保存在临时位置?如果是,那么上传失败的原因是什么?

jquery outlook valums-file-uploader

16
推荐指数
2
解决办法
1万
查看次数

Spring MVC在控制器之间传递相同的对象

在Spring MVC中,如何在两个控制器方法之间传递对象?我有一个更新表单和一个updateController.在控制器中我有2个方法,一个用于获取数据并在视图中显示它.当用户单击带有修改的更改的更新按钮时,将调用控制器的第二种方法.我观察到的是我在控制器的第二个方法中得到的对象与我在第一个控制器方法调用中传递给视图的对象不同.它是一个新对象,所有表单字段都映射到它.如何确保将相同的对象传递给第一个控制器方法提供给视图的第二个控制器方法?

@RequestMapping(value = "/showEmpDetail.html", method = RequestMethod.GET)
public String showEmpDetails(
        @RequestParam(value = "page", required = false) Integer page,
        HttpServletRequest request, @RequestParam("empId") Long empId,
        ModelMap model) {
    // Get employee using empId from DB
    model.addAttribute("emp",emp);
    return "showEmpDetail";
    }
Run Code Online (Sandbox Code Playgroud)

上述控制器方法从Db获取emp值并在视图中正确显示.现在用户更改了一些细节并单击了提交按钮.调用以下控制器方法.

@RequestMapping(value = "/editEmpFormSubmission.html", method = RequestMethod.POST)
public String editEmpFormSubmission(
        @RequestParam(value = "page", required = false) Integer page,
        @ModelAttribute("emp") Employee emp, BindingResult result,
        ModelMap model, HttpServletRequest request) {
     // update changes in DB
    }
Run Code Online (Sandbox Code Playgroud)

在上面的控制器方法中,当我检查emp对象时,它与我在之前的控制器调用中传递的对象不同.未形成后备但具有值的字段已更改为null.如何确保视图传递相同的对象.我不想将对象添加为sessionAttribute,因为用户可能会修改会话中的许多员工.

java spring spring-mvc

9
推荐指数
2
解决办法
4万
查看次数

Spring批处理聚合值并写入单个值

我正在使用 spring 批处理,我需要实现以下目标

  1. 读取包含日期和金额等详细信息的 csv 文件
  2. 汇总同一日期所有金额的总和
  3. 保留一个带有日期和总和的条目

我过去使用过批处理,我想到了以下方法。用 2 个步骤创建一个批次。

第1步:

  1. Reader:使用 FlatFileItemReader 遍历整个文件
  2. 处理器:使用键作为日期和值作为数量填充地图。如果存在条目,则获取该值并将其添加到新值中
  3. 作家:没有操作作家,因为我不想写

第2步:

  1. 阅读器:遍历地图的值
  2. 作家:坚持价值观

我能够实现我填充Map. 这Map已声明为@JobScope

我被困在如何为 step2 创建读取器,它只需要读取值列表。我试过了,ListItemReader但我无法MapListItemReader.

请提出解决方案,或者您是否有更好的方法来解决这个问题

谢谢

java spring spring-batch

6
推荐指数
1
解决办法
4995
查看次数

DBCP连接池connection.close()是否返回到池的连接

如果我们执行getConnection(),则使用DBCP中的BasicDataSource,在finally块中我们关闭连接,它确实会返回到池的连接,或者是否关闭连接.我正在检查的代码片段就是这个

try {
        Connection conn1 = getJdbcTemplate().getDataSource()
                .getConnection();
        //Some code to call stored proc 

    } catch (SQLException sqlEx) {
        throw sqlEx;
    } finally {
        try {
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException ex1) {
            throw ex1;
        }

    }
Run Code Online (Sandbox Code Playgroud)

我正在检查BasicDataSource的源代码,我到达了这个连接的包装类.

private class PoolGuardConnectionWrapper extends DelegatingConnection {

    private Connection delegate;

    PoolGuardConnectionWrapper(Connection delegate) {
        super(delegate);
        this.delegate = delegate;
    }

    public void close() throws SQLException {
        if (delegate != null) {
            this.delegate.close();
            this.delegate = null;
            super.setDelegate(null);
        }
    }
Run Code Online (Sandbox Code Playgroud)

委托对象,如果是java.sql.Connection类型.包装器代码调用委托的close方法,该方法将关闭集合而不是将连接返回到池.这是DBCP的已知问题,还是我错误地阅读了源代码请告诉我.

谢谢

java database-connection connection-pooling apache-commons-dbcp

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

应用程序中的Localstack AWS端点

我想为我的应用程序运行功能测试,该应用程序尝试将消息发布到AWS SNS。我尝试了LocalStack,发现它可以完成我在本地模拟和发布消息所需的一切。但是我的应用程序将amazon sdk客户端用于java,当我在本地运行它时,它仍然尝试将请求发布到亚马逊区域而不是LocalStack

确保应用程序与本地堆栈而不是与AWS URL交互的配置是什么?我们可以在AWS config中指定端点URL吗?我发现这是AWS CLI https://github.com/aws/aws-cli/issues/1270中的一个开放问题

是否有人为此实施了任何解决方法?

java amazon-web-services amazon-sns atlassian-localstack

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

guava:将列表转换为以索引为键的映射

在我的应用程序中,我有一个列表名称.我希望根据索引值将其转换为地图.例如

List<String> names = new ArrayList<String>();
names.add("Pratik");
names.add("Pratik");
names.add("Ram");
names.add("Varun");
Run Code Online (Sandbox Code Playgroud)

你能帮我一些guava/java api方法,它可以帮助我得到一个地图,其中键是索引,值是名称,即使有重复的值?如果名称中有两个"Pratik"字符串.地图应该是这样的

0 - >"Pratik",1 - >"Pratik",2 - >"Ram",3 - >"Varun"

java collections guava

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

一次选择中的多个作业

我在 PostgreSQL 中编写了一个函数,我希望使用单个 select 语句为变量分配多个值。我已经声明了一些变量,并使用选择来为函数体内的这些变量赋值。请在下面找到函数的主体:

BEGIN        
select SUM(quantity) into v_quantity, MAX(price) into v_price from trade where id=4;
END
Run Code Online (Sandbox Code Playgroud)

当我编译该函数时,出现以下错误

ERROR:  "max" is not a known variable
LINE 20:     select SUM(quantity) into v_quantity, max(price) into v_...
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?PostgreSQL 不允许通过单个选择进行多次分配吗?

postgresql plpgsql postgresql-9.1 postgresql-9.3

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

计算 PostgreSQL 数据库中的平均日期

我在 PostgreSQL 中有一张表,其中有在不同日期购买的订单。为了存档数据,我们需要将当年的所有记录合并,合并为一个记录,平均购买日期根据购买日期计算。

如何计算 PostgreSQL 中的平均购买日期?或者有没有办法在JAVA中做到这一点?

java sql postgresql

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