首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在play框架中调用webservice时出现的NullPointer异常

在play框架中调用webservice时出现的NullPointer异常
EN

Stack Overflow用户
提问于 2015-10-01 06:31:46
回答 1查看 752关注 0票数 0

这个程序有什么问题吗?

我是在2.4.3版的play框架中调用web服务时获得nullPointerException的。

代码语言:javascript
复制
package com.enkindle.box;

import javax.inject.Inject;

import play.libs.ws.WSClient;

/**
 * @author thirumal
 *
 */
public class Sample {

@Inject WSClient ws;   

public static void main(String[] args) {
    Sample sample = new Sample();
    sample.callAPI();
}

public void callAPI() {
    ws.url("www.thomas-bayer.com/sqlrest/CUSTOMER/").get();
}

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-01 20:31:56

问题是您的Sample类在依赖注入的上下文中不可用--我假设Guice。有几种方法可以解决这个问题,但最简单的方法是使用Guice创建一个Sample接口并绑定它的实现SampleImpl,这样它就可以用于注入的依赖项。我将假设这是从控制器中派生出来的,因此您可以将Sample注入到控制器中,然后从那里命中callApi()方法。

主计长:

代码语言:javascript
复制
public class SampleController extends Controller {
    @Inject Sample sample;

    public Promise<Result> apiCall() {
        sample.callApi();
        return promise(() -> ok());
    }
}

接口:

代码语言:javascript
复制
@ImplementedBy(SampleImpl.class)
public interface Sample {
    public void callApi();
}

以及接口实现:

代码语言:javascript
复制
public class SampleImpl implements Sample {
    @Inject WSClient ws;

    @Override
    public void callApi() {
        // ws should not be null
        ws.url("www.thomas-bayer.com/sqlrest/CUSTOMER/").get();
    }
}

参考文档:https://www.playframework.com/documentation/2.4.x/JavaDependencyInjection#Binding-annotations

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32880830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档