I just set up the Google Natural Language client in my code. Everything works fine on my local system, Google Natural Language API answers in seconds.
BUT when I try to run my code on Tomcat(localhost), the request terminates after 1 min with DEADLINE EXCEEDED ERROR
while doing a really simple test call.
Here is some code:
public static List<Entity> getLanguageEntities(String input, InputStream credentialInputStream) {
try {
// Instantiates a client
LanguageServiceClient language = getClient(credentialInputStream);
// build document
Document doc = Document.newBuilder().setContent(input).setType(Type.PLAIN_TEXT).build();
//HERE IT BREAKS..
AnalyzeEntitiesResponse analyzeEntitiesResponse = language.analyzeEntities(doc, EncodingType.NONE);
List<Entity> entityList = analyzeEntitiesResponse.getEntitiesList();
return entityList;
}catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static LanguageServiceClient getClient(InputStream credentialInputStream) throws Exception {
final LanguageServiceSettings languageServiceSettings;
final GoogleCredentials myCredentials = GoogleCredentials
.fromStream(credentialInputStream)
.createScoped(
Collections.singleton("https://www.googleapis.com/auth/cloud-platform")
);
final CredentialsProvider credentialsProvider = FixedCredentialsProvider.create(myCredentials);
final InstantiatingChannelProvider channelProvider = LanguageServiceSettings
.defaultChannelProviderBuilder()
.setCredentialsProvider(credentialsProvider)
.build();
languageServiceSettings = LanguageServiceSettings
.defaultBuilder()
.setChannelProvider(channelProvider)
.build();
// Create Google API client
LanguageServiceClient languageServiceClient = LanguageServiceClient.create(languageServiceSettings);
return languageServiceClient;
}