AWS(弹性豆茎)和#x2B;Java(Spring)=原因:从远程服务器读取时出错

AWS(弹性豆茎)和#x2B;Java(Spring)=原因:从远程服务器读取时出错,java,spring,jpa,amazon-web-services,tomcat7,Java,Spring,Jpa,Amazon Web Services,Tomcat7,我不会说英语。(我是巴西人) 我正在尝试使用Spring4+JPA2+Hibernate4运行Java Web应用程序。在我的本地服务器上,当前运行的很酷,在一段时间后运行AWS,出现以下错误: 链接: 代理错误 代理服务器从上游服务器接收到无效响应。 代理服务器无法处理GET/rest/restaurant/C1F15300-8BFC-496B-B90C-CF57596C8319/detail请求 原因:从远程服务器读取时出错 我的文件:(不要使用任何XML文件,所有设置都带有注释和Java类

我不会说英语。(我是巴西人)

我正在尝试使用Spring4+JPA2+Hibernate4运行Java Web应用程序。在我的本地服务器上,当前运行的很酷,在一段时间后运行AWS,出现以下错误:

链接:

代理错误

代理服务器从上游服务器接收到无效响应。 代理服务器无法处理GET/rest/restaurant/C1F15300-8BFC-496B-B90C-CF57596C8319/detail请求

原因:从远程服务器读取时出错

我的文件:(不要使用任何XML文件,所有设置都带有注释和Java类。)

应用程序属性

# Server
server.port=8080
server.sessionTimeout=30

# MVC
spring.view.prefix=/WEB-INF/jsp/
spring.view.suffix=.jsp

java.runtime.version=1.7

#DataSource
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://xx.database.windows.net:1433;database=xxx;encrypt=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;
spring.datasource.username=xxxx
spring.datasource.password=xxxx
spring.datasource.validationQuery=SELECT 1
spring.datasource.testOnBorrow=true
spring.datasource.poolPreparedStatements=true

# JPA
spring.jpa.database-platform=org.hibernate.spatial.dialect.sqlserver.SqlServer2008SpatialDialect
spring.jpa.generate-ddl=true
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=none
spring.jpa.hibernate.autocommit=true
spring.data.jpa.repositories.enabled=true

# Tomcat
tomcat.accessLogEnabled=false
tomcat.protocolHeader=x-forwarded-proto
tomcat.remoteIpHeader=x-forwarded-for
tomcat.backgroundProcessorDelay=30
server.tomcat.uri-encoding=UTF-8
server.session-timeout=40
RestaurantRestController.java

@RestController
@RequestMapping(value = "/rest/restaurant")
public class RestaurantRestController {

    private final RestaurantService service;

    @Inject
    public RestaurantRestController(final RestaurantService service) {
        this.service = service;
    }
    
    @RequestMapping(value = "/{uuid}/detail", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseStatus(HttpStatus.OK)
    @ResponseBody
    public Restaurant getDetail(@PathVariable("uuid") String uuid) {
        Restaurant restaurant = service.getRestaurant(uuid);          
        return restaurant;
    }
}
餐馆服务公司

@Service
@Validated
public class RestaurantServiceImpl implements RestaurantService {

    private final RestaurantRepository repository;
    
    @Inject
    public RestaurantServiceImpl(final RestaurantRepository repository) {
        this.repository = repository;
    }
     @Override
    @Transactional(readOnly = true)
    public Restaurant getRestaurant(String uuid){
        return repository.findOneByUUID(uuid);
        
    }
}
编辑(包括日志) 我意识到,过了一段时间(可能会话过期),本地“重新打开”几乎需要一分钟。遵循日志:

2014-07-07 10:32:29 DEBUG o.s.s.w.u.m.AntPathRequestMatcher:145 - Checking match of request : '/rest/restaurant/c1f15300-8bfc-496b-b90c-cf57596c8319/detail'; against '/rest/restaurant'
2014-07-07 10:32:29 DEBUG o.s.s.w.u.m.AntPathRequestMatcher:145 - Checking match of request : '/rest/restaurant/c1f15300-8bfc-496b-b90c-cf57596c8319/detail'; against '/rest/restaurant/**'
2014-07-07 10:32:29 DEBUG o.s.s.w.FilterChainProxy:180 - /rest/restaurant/C1F15300-8BFC-496B-B90C-CF57596C8319/detail has an empty filter list
2014-07-07 10:32:29 DEBUG o.s.w.s.DispatcherServlet:838 - DispatcherServlet with name 'dispatcherServlet' processing GET request for [/almocaqui/rest/restaurant/C1F15300-8BFC-496B-B90C-CF57596C8319/detail]
2014-07-07 10:32:29 DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping:246 - Looking up handler method for path /rest/restaurant/C1F15300-8BFC-496B-B90C-CF57596C8319/detail
2014-07-07 10:32:29 DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping:251 - Returning handler method [public com.snowmanlabs.almocaqui.domain.Restaurant com.snowmanlabs.almocaqui.rest.controller.RestaurantRestController.getDetail(java.lang.String)]
2014-07-07 10:32:29 DEBUG o.s.b.f.s.DefaultListableBeanFactory:249 - Returning cached instance of singleton bean 'restaurantRestController'
2014-07-07 10:32:29 DEBUG o.s.w.s.DispatcherServlet:925 - Last-Modified value for [/almocaqui/rest/restaurant/C1F15300-8BFC-496B-B90C-CF57596C8319/detail] is: -1
2014-07-07 10:32:29 DEBUG o.s.o.j.s.OpenEntityManagerInViewInterceptor:87 - Opening JPA EntityManager in OpenEntityManagerInViewInterceptor
2014-07-07 10:32:29 DEBUG o.s.b.f.s.DefaultListableBeanFactory:249 - Returning cached instance of singleton bean 'transactionManager'
2014-07-07 10:32:29 DEBUG o.s.o.j.JpaTransactionManager:334 - Found thread-bound EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@1f85dbd] for JPA transaction
****2014-07-07 10:32:29 DEBUG o.s.o.j.JpaTransactionManager:367 - Creating new transaction with name [com.snowmanlabs.almocaqui.service.implement.RestaurantServiceImpl.getRestaurant]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
2014-07-07 10:33:24 DEBUG o.s.o.j.JpaTransactionManager:403 - Exposing JPA transaction as JDBC transaction [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@565da00b]
2014-07-07 10:33:24 DEBUG o.s.o.j.JpaTransactionManager:755 - Initiating transaction commit
2014-07-07 10:33:24 DEBUG o.s.o.j.JpaTransactionManager:510 - Committing JPA transaction on EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@1f85dbd]
2014-07-07 10:33:25 DEBUG o.s.o.j.JpaTransactionManager:603 - Not closing pre-bound JPA EntityManager after transaction
2014-07-07 10:33:25 DEBUG o.s.w.s.m.m.a.RequestResponseBodyMethodProcessor:145 - Written [com.snowmanlabs.almocaqui.domain.Restaurant@48e83911] as "application/json" using [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@5bfa9eb7]
2014-07-07 10:33:25 DEBUG o.s.w.s.DispatcherServlet:1012 - Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling
2014-07-07 10:33:25 DEBUG o.s.o.j.s.OpenEntityManagerInViewInterceptor:112 - Closing JPA EntityManager in OpenEntityManagerInViewInterceptor
2014-07-07 10:33:25 DEBUG o.s.o.j.EntityManagerFactoryUtils:435 - Closing JPA EntityManager
2014-07-07 10:33:25 DEBUG o.s.w.s.DispatcherServlet:991 - Successfully completed request
服务器上的此延迟,小时数工作,小时数返回错误“从远程服务器读取错误”


编辑2 我想问题是连接到数据库的时间,我试图配置一个连接池

dbConfig.java文件

@PropertySource(value = "classpath:db.properties")
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories("com.snowmanlabs.almocaqui.repository")
@Configuration
public class dbConfig {
 
    @Autowired
    Environment env;
 
    @Bean
    public BoneCPDataSource boneCPDataSource() {
 
        BoneCPDataSource boneCPDataSource = new BoneCPDataSource();
        boneCPDataSource.setDriverClass(env.getProperty("jdbc.driverClass"));
        boneCPDataSource.setJdbcUrl(env.getProperty("jdbc.url"));
        boneCPDataSource.setUsername(env.getProperty("jdbc.username"));
        boneCPDataSource.setPassword(env.getProperty("jdbc.password"));
        boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);
        boneCPDataSource.setIdleMaxAgeInMinutes(420);
        boneCPDataSource.setMaxConnectionsPerPartition(30);
        boneCPDataSource.setMinConnectionsPerPartition(10);
        boneCPDataSource.setPartitionCount(3);
        boneCPDataSource.setAcquireIncrement(5);
        boneCPDataSource.setStatementsCacheSize(100);
 
        return boneCPDataSource;
 
    }
 
    @Bean
    public HibernateExceptionTranslator hibernateExceptionTranslator() {
        return new HibernateExceptionTranslator();
    }
 
    @Bean
    @Autowired
    public EntityManagerFactory entityManagerFactory(BoneCPDataSource dataSource) {
        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(true);
        vendorAdapter.setShowSql(false);
        vendorAdapter.setDatabasePlatform(env.getProperty("jdbc.database-platform"));
        vendorAdapter.setDatabase(Database.SQL_SERVER);
 
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setJpaVendorAdapter(vendorAdapter);
        factory.setPackagesToScan("com.snowmanlabs.almocaqui.domain");
        factory.setDataSource(dataSource);
 
        Properties properties = new Properties();
        properties.setProperty("hibernate.cache.use_second_level_cache", "true");
        properties.setProperty("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.EhCacheRegionFactory");
        properties.setProperty("hibernate.cache.use_query_cache", "true");
        properties.setProperty("hibernate.generate_statistics", "true");
 
        factory.setJpaProperties(properties);
 
        factory.afterPropertiesSet();
 
        return factory.getObject();
    }
 
    @Bean
    @Autowired
    public JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
        JpaTransactionManager txManager = new JpaTransactionManager();
        JpaDialect jpaDialect = new HibernateJpaDialect();
        
        txManager.setEntityManagerFactory(entityManagerFactory);
        txManager.setJpaDialect(jpaDialect);
        return txManager;
    }
 
}
10分钟后出错(非公开会话)

白标错误页

此应用程序没有/error的显式映射,因此您可以看到 这是一种退路

2014年7月8日星期二15:01:52 BRT发生意外错误 (类型=内部服务器错误,状态=500)。无法打开JPA 交易实体管理器;嵌套异常是 javax.persistence.PersistenceException: org.hibernate.TransactionException:JDBC begin事务失败:

我的回应是:

{"name":"Peperone Buffet","categories":[],"address":"Rua A, 4","wifi":false,"parking":false,"cards":[],"free":23.23,"kilo":45.34}

因此,要么您已经修复了:)要么您的错误与您的本地网络设置有关,而与Spring或AWS无关,您的应用程序就正常了。

您的应用程序服务器可能位于一个服务器后面。通常,反向代理具有超时设置。如果从后端获取答案所需的时间更长,它将给出该错误

类似的问题曾经发生在我身上,这是因为我使用了
localhost
host引用。事实证明,
localhost
可能不明确,它可以解释为ipv4或ipv6。在某些配置中,ipv4和v6之间的切换花费了很长时间,出现了代理错误


从那时起,我切换到使用
127.0.0.1
,这样它就不会切换到ipv6。

系统开始运行,从昨天起就没有崩溃,在这个主题之后,我没有做任何更改。昨天访问了10分钟和10分钟:内部发生了一些事情,日志中没有任何内容被注册,并开始显示sitada错误消息。(这件事昨天一整天都在发生)*很抱歉,我的英语可能是这样。在我的本地服务器上,启动应用程序需要将近1分钟,连接到另一台服务器(Windows Azure)上的SQL server需要很长时间。我怎样才能改变这个?我唯一能做的就是访问终端SSH外壳,除此之外我什么都不知道。嗨,我遇到了同样的问题,在本地测试时,我能够访问控制器,但是当我将war上传到AWS时,我没有找到资源。这个错误是在我将spring boot与jpa集成时产生的,之前没有问题。任何帮助都将不胜感激。谢谢