RemoteAPI в Google Appengine Standard с Java8 Runtime

Используя spring-boot в Google Appengine Standard с java8, иногда создаются новые темы - например, для событий?

Можно ли установить удаленный API на эти потоки при запуске на appengine. Отлично работает на сервере разработки, но не на производстве.

    public void onApplicationEvent(final M2MFactoryEvent m2m_factory_event) {

        try {

            //if(installer == null) {

            if(true) {

                log.error("Need to setup remote api.");

                installer = new RemoteApiInstaller();

                RemoteApiOptions options = null; 

                if(applicationEnvironmentIsDevelopment()) { // running locally on development server

                    options = new RemoteApiOptions()
                                .server("localhost", 8080)
                                .useDevelopmentServerCredential();

                } else if(!applicationEnvironmentIsDevelopment()) { // running on appengine

                    if("myapp".equals(googleCloudProject) || "myapp-dev".equals(googleCloudProject)) {

                        log.error("Need to setup remote api options");

                        File private_key_file = new ClassPathResource("myapp-dev.p12").getFile();

                        log.info("Private key file is " + private_key_file + ". Exists? " + private_key_file.exists() + ". CanRead? " + private_key_file.canRead());

                        String service_account_e_mail = "admin-myapp@" + googleCloudProject + ".iam.gserviceaccount.com";

                        /*JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

                        HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();

                        GoogleCredential credential = new GoogleCredential.Builder()
                                .setTransport(httpTransport)
                                .setJsonFactory(JSON_FACTORY)
                                .setServiceAccountId(service_account_e_mail)
                                .setServiceAccountPrivateKeyFromP12File(private_key_file)
                                //.setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
                                //.setServiceAccountUser(service_account_e_mail)
                                .build();*/

                        options = 
                            new RemoteApiOptions()
                                .server(googleCloudProject + ".appspot.com", 443)
                                ////.useServiceAccountCredential(service_account_e_mail, new ClassPathResource("myapp-dev.p12").getFile().getAbsolutePath())
                                //.useServiceAccountCredential(service_account_e_mail, credential.getServiceAccountPrivateKey())
                                .useApplicationDefaultCredential()
                                ;

                        log.info("Setup " + installer + " in " + getClass().getSimpleName() + ".");

                    } else {

                        log.error("Don't know how t setup the remote api environment on " + getClass().getSimpleName() + ".");

                    }

                }

                installer.install(options);

                installer.logMethodCalls();

                log.debug("Installed remote api on " + getClass().getSimpleName() +  ".");

            } else {

                log.info("" + installer + " already installed for remote api.");

            }

            ObjectifyService.run(new VoidWork() {

                /* (non-Javadoc)
                 * @see com.googlecode.objectify.VoidWork#vrun()
                 */
                public void vrun() {

                    // doing some work with objectify here...



                    }

                }

            });

        } catch(Exception e) {

            log.error("Problem in " + getClass().getSimpleName() + ".", e);



        } finally {

            if(installer != null)

                installer.uninstall();

            installer = null;

        }

        //installer.uninstall();

    }

Как вы можете видеть, я пробовал много способов подключения (файл p12, GoogleCredential и т. Д.) К удаленному API, но безуспешно.

Получение:

java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_112-google-v7]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_112-google-v7]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_112-google-v7]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_112-google-v7]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_112-google-v7]
at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_112-google-v7]
at java.net.Socket.connect(Socket.java:538) ~[na:1.8.0_112-google-v7]
at java.net.Socket.<init>(Socket.java:434) ~[na:1.8.0_112-google-v7]
at java.net.Socket.<init>(Socket.java:286) ~[na:1.8.0_112-google-v7]

Но я не могу понять, где?

Все методы, которые я пытался установить, работают нормально на сервере разработки и в автономных приложениях.

0 ответов

Другие вопросы по тегам