无服务器框架与java MySQL conexion

时间:2017-11-15 20:43:07

标签: java mysql serverless

我是无服务器框架的新手。我试图用maven,spring,hibernate,jpa,mysql和无服务器来测试一个简单的应用程序。

this is my project

由于restApi工作正常,但是当我在无服务器终端中调用该函数时,信息变为null,因为没有从db获取信息。 这是我的代码

的persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">
    <persistence-unit name="serverless-java" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.serverless.persistence.Wizard</class>

        <properties>                                                            

            <property name="hibernate.connection.url" value="jdbc:mysql://mydb.uiyfuas7434.us-east-1.rds.amazonaws.com:3306/mydb" />
            <property name="hibernate.connection.username" value="root" />
            <property name="hibernate.connection.password" value="1234" />
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />

            <!-- Important -->
            <property name="hibernate.connection.provider_class" value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider" />

            <property name="hibernate.c3p0.max_size" value="10" />
            <property name="hibernate.c3p0.min_size" value="0" />
            <property name="hibernate.c3p0.acquire_increment" value="1" />
            <property name="hibernate.c3p0.idle_test_period" value="120" />
            <property name="hibernate.c3p0.max_statements" value="0" />
            <property name="hibernate.c3p0.timeout" value="240" />
            <!-- Features -->
            <property name="hibernate.connection.autoReconnect" value = "true"/>
            <property name="hibernate.show_sql" value = "false" />
            <property name="hibernate.connection.autoReconnectForPools" value = "true"/>
            <property name="hibernate.connection.is-connection-validation-required" value = "true"/>



        </properties>
    </persistence-unit>
</persistence>

我的处理程序类

    public class Handler implements RequestHandler<Map<String, Object>, ApiGatewayResponse> {

    private static final Logger logger = LoggerFactory.getLogger(TestService.class);

    @Autowired
    private IBaseService service;

    @Override
    public ApiGatewayResponse handleRequest(Map<String, Object> input, Context context) {
        List<Wizard> prueba = service.getWizards();
        Map<String, Wizard> response = new HashMap<>();
        Response responseBody = new Response("success", response);
        try {
            for (Wizard entity : prueba) {
                response.put(entity.getName(), entity);
            }
            responseBody.setInput(response);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            responseBody.setMessage("Fail: " + e.getMessage());
        }
        return ApiGatewayResponse.builder().setStatusCode(200).setObjectBody(responseBody)
                .setHeaders(Collections.singletonMap("This is a test", "AWS Lambda & serverless")).build();
    }
} 

我的serverless.yml

service: aws-java-maven # NOTE: update this with your service name

provider:
  name: aws
  runtime: java8

  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "mysql:*"
      Resource: "*"

package:
  artifact: target/hello-dev.jar

functions:
 get-transactions:  
    handler: com.serverless.Handler

0 个答案:

没有答案
相关问题