gpt4 book ai didi

Java程序卡在TTransport Transport = new THttpClient ("this.host.com"上)

转载 作者:太空宇宙 更新时间:2023-11-04 14:29:07 27 4
gpt4 key购买 nike

我正在编写一个 Thrift 应用程序,它可以从外部网站获取输入并进行处理。然而,程序卡在了线上:

TTransport transport = new THttpClient("this.host.com");

我不确定为什么会发生这种情况。它没有给我任何错误消息等,但它也没有进展。当我收到来自调用 buildModel() 的客户端的请求时,它就会挂起。这是我的代码:

private void buildModel() throws UnknownHostException {
// Map of user preferences by Mahout user id
FastByIDMap<Collection<Preference>> userIDPrefMap = new FastByIDMap<Collection<Preference>>();
System.out.println("Building model");

try {
TTransport transport = new THttpClient(this.host);
TProtocol protocol = new TBinaryProtocol(transport);
MyCustomDatabase.Client client = new MyCustomDatabase.Client(protocol);

ConnectionParams con_params = new ConnectionParams();
con_params.setUser(this.username);
con_params.setPassword(this.password);
Connection con = client.open_connection(con_params);

ResultSet res = client.execute_sql(con, "select * from " + this.database + "." + this.tableName, null);

for (Tuple t : res.getTuples()) {
List<ByteBuffer> cells = t.getCells();
int userID = Integer.parseInt(new String(cells.get(0).array()));
int itemID = Integer.parseInt(new String(cells.get(1).array()));
int ratingValue = Integer.parseInt(new String(cells.get(2).array()));

Collection<Preference> userPrefs = userIDPrefMap.get(userID);
if (userPrefs == null) {
userPrefs = Lists.newArrayListWithCapacity(2);
userIDPrefMap.put(userID, userPrefs);
}
userPrefs.add(new GenericPreference(userID, itemID, ratingValue));
}
} catch(Exception e) {
e.printStackTrace();
}

this.delegate = new GenericDataModel(GenericDataModel.toDataMap(userIDPrefMap, true));
}

非常感谢任何帮助!

最佳答案

很难确切地说出问题是什么,但需要注意一些事项:

1) new THttpClient(this.host) 应采用 URI 字符串而不是主机名。在 Thrift Java 库中,这是您正在调用的构造函数:

public THttpClient(String url) throws TTransportException {
try {
url_ = new URL(url);
this.client = null;
this.host = null;
} catch (IOException iox) {
throw new TTransportException(iox);
}
}

如果您只是传递主机名而不是 URI,您可能不会得到您期望的结果。

2) 在 THttpClient 类的 javadoc 中,他们建议使用 Apache HttpClient 构造函数而不是默认的 HttpURLConnection 构造函数,这样既可以提高性能,又可以避免在重负载下耗尽打开文件描述符限制。

我建议尝试将有效的 URI 传递给构造函数,如果这不起作用,请尝试使用 HttpClient,或者同时使用这两种措施。

关于Java程序卡在TTransport Transport = new THttpClient ("this.host.com"上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26352510/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com