일부 REST 서비스에 액세스해야하는 명령 줄 Java 프로그램을 만들려고합니다. 나는 autowiring을 사용하여 동일한 작업을 수행하는 스프링 webapp 중 하나를 언급했다. 나는 webapp의 spring config 파일에서 아래를 볼 수있다. 이것은 인수 'http://localhost:8080/'와 JacksonJsonProvider의 인스턴스를 갖는 목록을 사용하여 WbClient의 인스턴스를 만들 것이다 봄 하더군요명령 줄 프로그램에서 REST 서비스에 액세스 할 때의 문제
<bean id="jacksonJsonProvider" class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider" />
<util:list id="webClientProviders">
<ref bean="jacksonJsonProvider"/>
</util:list>
<bean id="jsonWebClient" class="org.apache.cxf.jaxrs.client.WebClient" factory-method="create">
<constructor-arg type="java.lang.String" value="http://localhost:8080/"/>
<constructor-arg ref="webClientProviders" />
</bean>
. 내 말이 맞습니까?
웹 응용 프로그램 코드에서도 아래의 사용법을 볼 수 있습니다.
@Controller
public class ABController {
@Autowired
@Qualifier("jsonWebClient")
private WebClient webclient;
@RequestMapping(value = "/abc.action", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public String getABCD(HttpServletRequest request, HttpServletResponse response) {
...
...
WebClient wc = WebClient.create(webclient.getBaseURI());
wc.path("abcdservices/rest/restservices/cart/gettotal");
Response res = wc.get();
...
...
}
}
그러나 아래 그림 (일부 변형)로 나는 나의 자바 프로그램에서 동일한 작업을 수행 할 때
List<Object> providers = new ArrayList<Object>();
JacksonJsonProvider j = new JacksonJsonProvider();
providers.add(j);
WebClient webclient = WebClient.create("http://localhost:8080/",
providers);
WebClient wc = webclient.create(webclient.getBaseURI());
wc.path("crmitsm/rest/cirestservices/crmitsm/warrantystatus");
Response res = wc.get();
나는 아래의 예외/오류가 발생합니다.
java -jar target/CmdLine-0.0.1-SNAPSHOT-jar-with-dependencies.jar
Exception in thread "main" java.lang.NullPointerException
at org.apache.cxf.jaxrs.client.AbstractClient.setupOutInterceptorChain(AbstractClient.java:887)
at org.apache.cxf.jaxrs.client.AbstractClient.createMessage(AbstractClient.java:958)
at org.apache.cxf.jaxrs.client.WebClient.finalizeMessage(WebClient.java:1118)
at org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:1091)
at org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:894)
at org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:865)
at org.apache.cxf.jaxrs.client.WebClient.invoke(WebClient.java:331)
at org.apache.cxf.jaxrs.client.WebClient.get(WebClient.java:357)
at org.CmdLine.App.main(App.java:37)
아무도 도와주세요. 나는 여기서 내가 누락 된 것을 이해할 수 없다.
나는 스프링을 사용하지 않고 간단한 자바 응용 프로그램 인 클라이언트 프로그램에서이 작업을 수행하려고합니다. – Aniruddha
CXF 웹 클라이언트 [여기] (http://cxf.apache.org/docs/jax-rs-client-api.html#JAX-RSClientAPI-CXFWebClientAPI)를 작성하는 올바른 방법을 찾을 수 있습니다. – Cyriac