小编gre*_*ker的帖子

使用Jackson重载方法将JSON反序列化为对象

我试图使用Jackson反序列化存储在CouchDb中的JSON对象.此对象需要反序列化为包含重载方法的pojo.当我尝试从沙发中检索对象并进行反序列化时,我得到以下异常:

org.ektorp.DbAccessException:org.codehaus.jackson.map.JsonMappingException:属性"multiplier"的冲突setter定义:com.db.commodities.framework.sdos.model.security.EqOpt #setMultiplier(1 params)vs com.db .commodities.framework.sdos.model.security.EqOpt #setMultiplier(1 params)

我试图注释我希望杰克逊使用的二传手,但这似乎没有用.

@JsonProperty("multiplier")
public void setMultiplier(SDOSAttribute multiplier) {
     this.multiplier = multiplier;
}

public void setMultiplier(double multiplier) {
     this.multiplier.setValue(String.valueOf(multiplier));
}
Run Code Online (Sandbox Code Playgroud)

如何配置Jackson以使用特定方法正确反序列化?或者我是以错误的方式处理这个问题?

编辑:

我做了以下更改.这似乎有效,但有点丑陋.如果有人有更好的方法来做到这一点,请随意分享,我很乐意接受.

@JsonProperty("multiplier")
protected void setMultiplierAttribute(SDOSAttribute multiplier) {
    this.multiplier = multiplier;
}

@JsonIgnore
public void setMultiplier(double multiplier) {
    this.multiplier.setValue(String.valueOf(multiplier));
}
Run Code Online (Sandbox Code Playgroud)

java json jackson

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

Websockets与Reactive套接字

我最近遇到过"反应套接字"一词.到目前为止,我曾经认为websockets是完全成熟的异步风格的方法.

什么是无功插座.

这个链接(http://reactivesocket.io/)甚至讨论了websockets的比较.

websocket reactive rsocket

9
推荐指数
3
解决办法
2050
查看次数

如何在运行时在Drools DRL中将事实添加到工作内存中,并在无状态会话的执行结果中检索它们?

背景:

我正在开发一个应用程序,它根据一组drools规则将输入对象转换为两个输出对象之一.直到运行时才知道输出对象,并在第一个要执行的规则中创建它.

以下是创建输出对象的规则和示例转换规则:

rule "Initialization"
    dialect "java"
    salience 1000
    no-loop true
    when
        t : Trade()
    then 
        if(t.getTran().getInsType().equalsIgnoreCase("EEO") ||
           t.getTran().getInsType().equalsIgnoreCase("EEF"))
        {
            insert(new Option());
        }
        else
        {
            insert(new Swap());
        }
end

rule "Example Rule"
    dialect "java"
    when
        t : Trade()
        opt : Option()
    then
        opt.setCounterpartyName(t.getTran().getCParty());
end
Run Code Online (Sandbox Code Playgroud)

以下是调用规则的代码:

private void test(){
    for(File xmlFile : getXmlFilesFromDirectory(XML_DIRECTORY))
    {
        Trade trade = (Trade)unmarshall(xmlFile, Trade.class);

        KnowledgeBase kbase = readKnowledgeBase();

        StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
        KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);

        List<Command> commands = new ArrayList<Command>();
        commands.add(CommandFactory.newInsert(trade, "trade"));
        commands.add(CommandFactory.newFireAllRules());

        ExecutionResults results …
Run Code Online (Sandbox Code Playgroud)

java drools

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

如何从异步方法向调用者抛出异常?

今天我读了很多关于async/await的内容,这让我大吃一惊.我无法理解为什么以下测试通过.

[Test]
public void Test()
{
    var listener = new AsyncHttpListener();
    listener.ListeningAsync();

    try
    {
        new WebClient().DownloadString("http://localhost:8080/");
    }
    catch (Exception)
    {
    }

    listener.Close();
}

public class AsyncHttpListener
{
    private readonly HttpListener listener;

    public AsyncHttpListener()
    {
        listener = new HttpListener();
        listener.Prefixes.Add("http://localhost:8080/");
        listener.Start();
    }

    public void Close()
    {
        listener.Close();
    }

    public async void ListeningAsync()
    {
        var context = await listener.GetContextAsync();
        HandleContext(context);
    }

    private void HandleContext(HttpListenerContext context)
    {
        throw new Exception("test excpetion");
    }
}
Run Code Online (Sandbox Code Playgroud)


测试通过,但输出包含:

System.Exception
test excpetion
   at AsyncHttpListenerTest.AsyncHttpListener.HandleContext(HttpListenerContext context) in AsyncHttpListener.cs: line …

.net c# exception-handling async-await

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

为什么在使用Spring和@Provider注释时仍然需要resteasy.providers?

我有一个Resteasy应用程序,它使用Spring并包含ContainerRequestFilterContainerResponseFilter实现注释@Provider.该应用程序正在使用3.0-beta-6Resteasy 版本.

这些过滤器在添加到resteasy.providersweb.xml中的context参数时按预期工作,如下所示:

<context-param>
      <param-name>resteasy.providers</param-name>
      <param-value>foo.filter.LoggingRequestFilter,
                   foo.filter.LoggingResponseFilter</paramvalue>
</context-param> 
Run Code Online (Sandbox Code Playgroud)

如果我从这里删除过滤器,则不再调用它们.

我假设这些提供商在使用时会自动注册Resteasy org.jboss.resteasy.plugins.spring.SpringContextLoaderListener.对我来说奇怪的是它适用PreProcessInterceptor于以前版本的Resteasy中的实现,并且仍然适用于v3,但Filters和ExceptionMappers不会自动注册.

问题

  1. resteasy.providers如果使用@ProviderSpring 对类进行注释和扫描,为什么需要上下文参数?
  2. 是否有一种以编程方式在运行时设置这些提供程序?

java spring web.xml jax-rs resteasy

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

Resteasy Bean验证未被调用

问题背景

我有一个Resteasy服务,通过Resteasy使用Spring SpringContextLoaderListener.这是基于Resteasy版本3.0-beta-6.

我想对传入的请求使用bean验证,但我无法让Resteasy调用验证器.它的作用就像没有配置验证,只是将方法传递给无效的输入对象.

  1. 如何在Resteasy中启用bean验证?

我试过的

我做了以下事情:

  1. 用我的资源类注释 @ValidateRequest
  2. 使用注释方法参数 @Valid
  3. 注释我输入类的约束.
  4. 添加了依赖项 resteasy-hibernatevalidator-provider

资源:

@Named
@Path("users")
@ValidateRequest
public class UserResource 
{
    /**
     * 
     * @param user
     * 
     * curl -x POST http://localhost:7016/api/1.0/users
     * 
     */
    @POST
    @Consumes({MediaType.APPLICATION_JSON})
    @Produces({MediaType.APPLICATION_JSON})
    public Response createUser(@Valid User user)
    {
        //User creation logic here.
    }
}
Run Code Online (Sandbox Code Playgroud)

用户POJO:

@JsonPropertyOrder({
    "user_id",
    "user_name",
    "email"
})
public class User
{
    @JsonProperty("user_id")
    private Long userId;

    @JsonProperty("user_name")
    @NotNull(message = "Username must be provided")
    private String username;

    @Email(message = …
Run Code Online (Sandbox Code Playgroud)

java spring resteasy bean-validation

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

在java中等于和==行为

请你解释下面的行为.

public class EqAndRef {

    public static void main(String[] args) {
        Integer i = 10;
        Integer j = 10;

        Double a = 10D;
        Double b = 10D;

        System.out.println(i.equals(j));
        System.out.println(i == j);


        System.out.println(a.equals(b));
        System.out.println(a == b);


    }
}
Run Code Online (Sandbox Code Playgroud)

输出jdk 6

true
true
true
false
Run Code Online (Sandbox Code Playgroud)

为什么a == b是假的而我= = j不是假的?

java

6
推荐指数
2
解决办法
388
查看次数

如何在C中使用EOF stdin

我需要将坐标输入到数组中,直到遇到EOF,但我的代码中出现了错误.我用ctrl + Z,ctrl + D.

int main()
{
    int x[1000],y[1000];
    int n=0,nr=0,a,b,i;
    printf("Enter the coordinates:\n");
    while(scanf ( "%d %d ", &a, &b) == 2)
    {
     x[n]=a;
     y[n]=b;
     n++;
    }
    if (!feof(stdin))
    {
       printf("Wrong\n");
    }
    else
    {
       for(i=0;i<n;i++)
       printf("%d %d\n", x[i], y[i]);
    }

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c stdin scanf feof

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

在应用程序和IFrame之间传递凭据

我有一个Web应用程序(A),其中包含一个iframe.在iframe包括另一web应用程序(B).

假设我登录到Web应用程序A并显示5个不同的iframe,托管5个不同的模块.其中一个模块是需要用户登录的CRM应用程序.如何将Web应用程序A中已登录用户的凭据传递给托管在iframe?中的此CRM模块(Web应用程序B)?

在此输入图像描述

.net c# asp.net cross-application

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

如何使用 RSocket 创建文件发送客户端/服务器?

我似乎无法在RSocket上找到任何资源/教程,只能在 GitHub 上阅读他们的代码,我不明白。

我的服务器上有一个文件路径: String serverFilePath;

我希望能够从我的客户端下载它(最好使用RSocket 的 Aeron 实现)。有谁知道如何使用 RSocket 做到这一点?

提前致谢。

java file-sharing download aeron rsocket

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