📄 exchangeratecache.java
字号:
//== save as ExchangeRateCache.java
import java.io.*;
import java.net.*;
import java.util.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
public class ExchangeRateCache {
private static Hashtable rate_table = new Hashtable(6);
public static String getExchangeRate(String country) {
String rateString = (String)rate_table.get(country);
if( rateString != null ) {
return rateString + " (old)";
} else {
return callExchangeRateService( country );
}
}
public static synchronized String callExchangeRateService(String country) {
// just in case the last guy got it while we were waiting
String rateString = (String)rate_table.get(country);
if(rateString != null) {
return rateString + " (got)";
}
try {
URL url = new URL("http://localhost:8088/soap/servlet/rpcrouter");
String encodingStyleURI = Constants.NS_URI_SOAP_ENC;
URLConnection connection = url.openConnection();
// Build the call.
Call call = new Call ();
call.setTargetObjectURI("SoapExchangeRate");
call.setMethodName("getExchangeRate");
Vector params = new Vector ();
call.setEncodingStyleURI(encodingStyleURI);
params.addElement(new Parameter("country", String.class, country, null));
call.setParams(params);
Response resp = call.invoke (url, "");
if (resp.generatedFault()) {
Fault fault = resp.getFault ();
rateString = fault.getFaultString ();
} else {
Parameter result = resp.getReturnValue ();
rateString = ((Double)result.getValue()).toString();
rate_table.put( country, rateString );
return rateString + " (new)";
}
} catch(Exception e) {
rateString = e.getMessage();
}
return rateString;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -