使用Java 6,Tomcat 7,Jersey,HttpClient和ehCache Server。
在$ CATALINA_HOME / ehcache / WEB-INF / classes / ehcache.xml
中注册了一个名为ipad的新缓存<cache name="ipad"
maxElementsInMemory="10000"
eternal="true"
overflowToDisk="false"
memoryStoreEvictionPolicy="FIFO"
/>
这就是我的客户端的样子:
import org.apache.http.impl.client.DefaultHttpClient;
public class EhCachePostClient {
public static void main(String[] args) throws Exception {
String jsonString = "{\"qty\":100,\"name\":\"iPad 4\"}";
// Post the same object to ehCache
DefaultHttpClient ehCacheClient = new DefaultHttpClient();
String ehCacheResponseString =
EhCacheClientHelper.getEhCacheJsonResponseString(ehCacheClient, jsonString);
System.out.println("\nFrom ehCache Server: " + ehCacheResponseString);
ehCacheClient.getConnectionManager().shutdown();
}
}
这是EhCacheClientHelper类(完成了大部分工作):
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
public class EhCacheClientHelper {
private static final String EHCACHE_IPAD_URI
= "http//localhost:8080/ehcache/rest/ipad";
public static String getEhCacheJsonResponseString(
DefaultHttpClient httpClient, String responseString)
throws Exception {
HttpPost postRequest = new HttpPost(EHCACHE_MDS_URI);
StringEntity input = new StringEntity(responseString);
input.setContentType("application/json");
postRequest.setEntity(input);
HttpResponse response = httpClient.execute(postRequest);
if (response.getStatusLine().getStatusCode() != 201) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
StringBuilder ehCacheOutput = new StringBuilder();
System.out.println("\nOutput from ehCache Server .... \n");
while ((output = br.readLine()) != null) {
ehCacheOutput.append(output);
}
return ehCacheOutput.toString();
}
}
这是我得到的例外:
Exception in thread "main" java.lang.IllegalStateException: Target host must not be null, or set in parameters.
at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:784)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:414)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
at com.myapp.client.EhCacheClientHelper.getEhCacheJsonResponseString(EhCacheClientHelper.java:22)
at com.myapp.client.EhCachePostClient.main(EhCachePostClient.java:19)
我做错了什么?
我想要做的就是在ehCache中创建一个示例缓存,向其发布某种类型的JSON对象,然后使用curl命令检索它。
这是一件难事吗?我缺少什么(在实施,配置等方面)?
感谢您抽出宝贵时间阅读此内容......
答案 0 :(得分:2)
你有:
HTTP //...
应该是:
的http:// ...
你错过了“:”