【问题标题】:Google App Engine application connection to a Third Party CloudGoogle App Engine 应用程序连接到第三方云
【发布时间】:2020-05-21 09:15:54
【问题描述】:

根据this link,我应该能够将我的 Google App Engine Web 应用程序连接到外部数据库(在这种情况下,我想将其连接到 heroku ClearCB-mysql)。

"Other cloud providers
App Engine apps can connect to external databases that are hosted on other public clouds as
long as those database servers and your firewall are configured properly to accept
connections. Your App Engine app connects over the Internet using that external 
service's public IP address."

谁能指出正确的服务和防火墙配置?我找不到任何关于它的文档,我什至不知道从哪里开始(我需要对傻瓜 o_O 的解释);)。

我正在通过 spring-jpa 连接到 DB,它在 localhost 上运行得很好,只是当我将文件上传到 Google App Engine 时它​​超时。


ApplicationConfig.java

@Configuration
@EnableJpaRepositories(basePackages = "dominikazb")
@EnableTransactionManagement
@ComponentScan(basePackages = "dominikazb")
public class ApplicationConfig extends WebMvcConfigurationSupport {

@Bean
public InternalResourceViewResolver jspViewResolver(){
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setPrefix("/WEB-INF/jsp/");
    viewResolver.setSuffix(".jsp");
    viewResolver.setViewClass(JstlView.class);
    return viewResolver;
}


@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    LocalContainerEntityManagerFactoryBean em
            = new LocalContainerEntityManagerFactoryBean();
    em.setDataSource(dataSource());
    em.setPackagesToScan(new String[] { "dominikazb" });

    JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    em.setJpaVendorAdapter(vendorAdapter);
    em.setJpaProperties(additionalProperties());
    return em;
}

@Bean
public DataSource dataSource(){
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://hostname/databasename");
    dataSource.setUsername( "username" );
    dataSource.setPassword( "password" );
    return dataSource;
}

@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(emf);
    return transactionManager;
}

@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation(){
    return new PersistenceExceptionTranslationPostProcessor();
}

Properties additionalProperties() {
    Properties properties = new Properties();
    properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
    return properties;
}
}

UserRepository.java

@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
}

用户.java

@Entity
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int user_id;
private String username;
private String password;

//getters, setters and constructor

}

HomeController.java

@Controller
public class HomeController {

@Autowired
private UserRepository userRepository;

@RequestMapping(value = "/", method = RequestMethod.GET)
public String takeMeHome() {
    return "index";
}

@RequestMapping(value = "/getall", method = RequestMethod.GET)
public @ResponseBody Iterable<User> getAllUsers() {
    return userRepository.findAll();
}
}

pom.xml(相关依赖)

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
  <version>8.0.19</version>
</dependency>

<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-jpa</artifactId>
  <version>2.1.4.RELEASE</version>
</dependency>

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>5.4.1.Final</version>
</dependency>

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-entitymanager</artifactId>
  <version>5.4.2.Final</version>
  <scope>runtime</scope>
</dependency>

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.10.0.pr3</version>
</dependency>

【问题讨论】:

    标签: java mysql database google-app-engine web-applications


    【解决方案1】:

    致所有与我有同样问题的人。我在 Google App Engine 的 Billing 部分找到了答案。我的意思是我用完了可以添加到我的账单帐户的项目,并且对他们来说,与外部数据库的连接受到限制。一旦我将我的应用程序上传到一个启用了计费的项目,一切都像一个魅力。

    【讨论】:

      猜你喜欢
      • 2021-07-23
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多