[
https://issues.apache.org/jira/browse/CXF-2585?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12793579#action_12793579
]
Sergey Beryozkin commented on CXF-2585:
---------------------------------------
Hi,
@Path("/webform.html?cmd=execute")
identifies the value for the uri path component, so '?' and '=' have to be
encoded. JAXRS does not provide for embedding query values inside a @Path
annotation
How is the service endpoint written ? Is it a 3rd-party endpoint or is it
yourself who wrote it ? If yes then may be that service endpoint can be updated
to default to "execute" if no "cmd" query is provided ?
Another option to try is to change your method signature like this :
String createCustomer(@QueryParam("") QueryBean bean);
public class QueryBean {
private String cmd = "execute";
private String workflow;
public QueryBean() {
this("defaultWorkflowValue")
}
public QueryBean(String workflow) {
this.workflow = workflow;
}
public void setCmd(String value) {
cmd = value;
}
public String getCmd() {
return cmd;
}
public void setWorkflow(String value) {
workflow = value;
}
public String getWorkflow() {
return workflow;
}
}
and then
proxy.createCustomer(new QueryBean("SomeWorkflowValue"));
This option is good in that you can add a support for new queries by updating
the query bean and the service implementation but without changing the signature
Finally, you can try to do
@Path("/webform.html")
public String createCustomer(@QueryParam("workflow") String workflow);
But then update Message.REQUEST_URI value on the current message in the CXF out
interceptor, by appending "&cmd=execute" to it
hope it helps, Sergey
> Already connected exception when using a proxy created with JAXRSClientFactory
> ------------------------------------------------------------------------------
>
> Key: CXF-2585
> URL: https://issues.apache.org/jira/browse/CXF-2585
> Project: CXF
> Issue Type: Bug
> Components: JAX-RS
> Affects Versions: 2.2.5
> Environment: JDK 1.5.0.18
> Reporter: S.Allegro
> Assignee: Sergey Beryozkin
> Fix For: 2.2.6, 2.3
>
>
> I'm trying to get a very simple Rest client working, but I always got this
> exception:
> java.lang.IllegalStateException: Already connected
> at
> java.net.HttpURLConnection.setFixedLengthStreamingMode(HttpURLConnection.java:100)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.thresholdNotReached(HTTPConduit.java:1885)
> at
> org.apache.cxf.io.AbstractThresholdOutputStream.close(AbstractThresholdOutputStream.java:99)
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1976)
> at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
> at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:637)
> at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
> at
> org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:429)
> at
> org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:166)
> at $Proxy16.doSomething(Unknown Source)
> at com.francetelecom.resttest.RestTest.main(RestTest.java:27)
> Here is my jax-rs interface:
> @Path("/")
> public interface RestWS {
> @POST
> @Path("/test")
> public String doSomething( @QueryParam("param") String paramName);
> }
> And here the way my client uses it:
> RestWS proxy =
> JAXRSClientFactory.create("http://localhost:8080/RestWSMock",RestWS.class);
> proxy.doSomething("bob");
> I can not get it simpler. Any idea what's wrong ?
> regards
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.