小编dru*_*ist的帖子

Spring Boot中的Postgres连接已关闭错误

我正在运行Spring Boot应用程序来创建REST api.我经常收到错误,说数据库连接已关闭,之后我无法调用该应用程序.我正在使用Postgres DB.这是完整的堆栈跟踪:

org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.TransactionException: JDBC begin transaction failed: 
    at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:431)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:457)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:276)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
    at com.sun.proxy.$Proxy91.findByUriMoniker(Unknown Source)
    at com.mypkg.businessobjects.OrderInfoBO.getOrderInfo(OrderInfoBO.java:76)
    at com.mypkg.controller.OrderInfoController.getOrderInfo(OrderInfoController.java:78)
    at sun.reflect.GeneratedMethodAccessor104.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:777)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:706)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:130)
    at …
Run Code Online (Sandbox Code Playgroud)

postgresql spring spring-boot

24
推荐指数
2
解决办法
3万
查看次数

在Scala中将JSON字符串转换为JSON对象

我想将一个简单的JSON字符串转换为{"Name":"abc", "age":10}相应的JSON对象(不是自定义的Scala对象,如"Person").Scala是否支持将String转换为JSON对象的任何内置方法?

我不会有任何复杂的JSON操作.我只需要将String转换为JSON对象.最简单的方法是什么?我是Scala的新手,所以如果这个问题听起来很基本,我会道歉.

谢谢.

json scala

16
推荐指数
3
解决办法
5万
查看次数

Writing to JSON column of Postgres database using Spring/JPA

我有一个名为"test"的表,其中包含Postgres 9.3中json类型的列"sample_column".我正在尝试使用Spring/JPA将以下内容写入列:{"name":"Updated name"}

我在其他帖子上读到我需要添加一个自定义转换器来将字符串映射到json类型.这是我现在的代码:

TestDAO.java:

@Entity
@Table(name="test")
public class TestDAO implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id", unique=true, nullable=false)
    private Long id;   

    @Column(name="sample_column")
    @Convert(converter = MyCustomConverter.class)
    private MyCustomClass sampleColumn;

    // Getter / Setters
}
Run Code Online (Sandbox Code Playgroud)

用于映射json内容的CustomClass:

public class MyCustomClass {
    @JsonProperty("name")
    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
Run Code Online (Sandbox Code Playgroud)

最后,转换器类:

@javax.persistence.Converter
public class MyCustomConverter implements AttributeConverter<MyCustomClass, String> {

    private final static ObjectMapper objectMapper …
Run Code Online (Sandbox Code Playgroud)

spring json jpa postgresql-9.3

15
推荐指数
2
解决办法
1万
查看次数

使用Python迭代挂载点

如何使用Python迭代Linux系统的挂载点?我知道我可以使用df命令来完成它,但是有没有内置的Python函数来做到这一点?

另外,我只是编写一个Python脚本来监视挂载点使用情况并发送电子邮件通知.与Python脚本相比,作为普通的shell脚本执行此操作会更好/更快吗?

谢谢.

python shell

9
推荐指数
3
解决办法
7923
查看次数

在由JoinColumn注释的字段上编写CRUDRepository的findBy()方法

我对Spring JPA有点新意,所以如果我的问题听起来很基本,我会提前道歉.我有2个实体对象:OrderInfo和PersonInfo.课程如下:

@Entity
@Table(name="order_info")
@NamedQuery(name="OrderInfo.findAll", query="SELECT o FROM OrderInfo o")
public class OrderInfo implements Serializable {

    @Column(name="order_number")
    private String orderNumber;

    //bi-directional many-to-one association to PersonInfo
    @ManyToOne
    @JoinColumn(name="person_id")
    private PersonInfo personInfo;

    public String getOrderNumber() {
        return this.orderNumber;
    }

    public void setOrderNumber(String orderNumber) {
        this.orderNumber = orderNumber;
    }

    public PersonInfo getPersonInfo() {
        return this.personInfo;
    }

    public void setPersonInfo(PersonInfo personInfo) {
        this.personInfo = personInfo;
    }


}
Run Code Online (Sandbox Code Playgroud)

而Person实体:

@Entity
@Table(name="person_info")
@NamedQuery(name="PersonInfo.findAll", query="SELECT p FROM PersonInfo p")
public class PersonInfo implements Serializable {

    //bi-directional many-to-one …
Run Code Online (Sandbox Code Playgroud)

spring jpa spring-data-jpa

9
推荐指数
2
解决办法
1万
查看次数

Spring引号注释@Autowired of Service失败

我正在尝试@Autowired在Spring Boot应用程序中为Service类使用注释,但它不断抛出No qualifying bean of type异常.但是,如果我将服务类更改为bean,那么它可以正常工作.这是我的代码:

package com.mypkg.domain;
@Service
public class GlobalPropertiesLoader {

    @Autowired
    private SampleService sampleService;        
}

package com.mypkg.service;
@Service
public class SampleService{

}
Run Code Online (Sandbox Code Playgroud)

这是我的SpringBoot类:

package com.mypkg;

import java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;

@SpringBootApplication
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableTransactionManagement
public class TrackingService {
    private static final Logger LOGGER = LoggerFactory.getLogger(TrackingService.class);

    static AnnotationConfigApplicationContext context;

    public static void main(String[] …
Run Code Online (Sandbox Code Playgroud)

spring annotations spring-mvc spring-boot

8
推荐指数
1
解决办法
3万
查看次数

在EMR上运行Spark作业时的AWS连接超时

我正在尝试在Amazon EMR集群中提交一个简单的spark作业.我的群集有5个M4.2xlarge实例(1个主服务器,4个从服务器),每个实例有16个vCPU,32个内存.

这是我的代码:

def main(args : Array[String]): Unit = {
 val sparkConfig = new SparkConf()
  .set("hive.exec.dynamic.partition", "true")
  .set("hive.exec.dynamic.partition.mode", "nonstrict")
  .set("hive.s3.max-client-retries", "50")
  .set("hive.s3.max-error-retries", "50")
  .set("hive.s3.max-connections", "100")
  .set("hive.s3.connect-timeout", "5m")
  .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
  .set("spark.kryo.registrationRequired", "true")
  .set("spark.kryo.classesToRegister", "org.apache.spark.graphx.impl.VertexAttributeBlock")
  .set("spark.broadcast.compress", "true")

 val spark = SparkSession.builder()
    .appName("Spark Hive Example")
    .enableHiveSupport()
    .config(sparkConfig)
    .getOrCreate()

// Set Kryo for serializing
GraphXUtils.registerKryoClasses(sparkConfig)
val res = spark.sql("SELECT col1, col2, col3 FROM table1 limit 10000")
val edgesRDD = res.rdd.map(row => Edge(row.getString(0).hashCode, row.getString(1).hashCode, row(2).asInstanceOf[String]))

val res_two = spark.sql("SELECT col1 FROM table2 where col1 is …
Run Code Online (Sandbox Code Playgroud)

hadoop amazon-s3 emr apache-spark apache-spark-sql

8
推荐指数
2
解决办法
3395
查看次数

Spring启动自动装配在Configuration类中不起作用

我有一个Spring Boot应用程序,它使用Redis服务器进行缓存.我使用Spring RedisTemplate连接到Redis服务器.我在一个@Confiuration类中配置Redis参数.但是,redis url和port存储在DB中,相应的DAO作为另一个类(也包含其他全局信息)的成员包含在内.我正在尝试在Configuration类中自动装配父类,但是我收到错误.这是我的代码:

@Configuration
public class MyConfiguration {
    @Autowired
    protected GlobalPropertiesLoader globalPropertiesLoader;

    @Bean
    JedisConnectionFactory jedisConnectionFactory() {
        JedisConnectionFactory factory = new JedisConnectionFactory();
        GlobalPropertiesDAO globalPropertiesDAO = globalPropertiesLoader.getGlobalProperties();

        factory.setHostName(globalPropertiesDAO.getRedisUrl());
        factory.setPort(globalPropertiesDAO.getRedisPort());
        factory.setUsePool(true);
        return factory;
    }

    @Bean
    RedisTemplate< String, Object > redisTemplate() {
        final RedisTemplate< String, Object > template =  new RedisTemplate< String, Object >();
        template.setConnectionFactory( jedisConnectionFactory() );
        template.setKeySerializer( new StringRedisSerializer() );
        template.setHashValueSerializer( new GenericToStringSerializer< Object >( Object.class ) );
        template.setValueSerializer( new GenericToStringSerializer< Object >( Object.class ) );
        return template;
    }
} …
Run Code Online (Sandbox Code Playgroud)

spring spring-boot

6
推荐指数
1
解决办法
4万
查看次数

将JPA实体的JSON字符串列自动映射到Java对象

我有一个JPA实体对象具有以下结构:

@Table(name="item_info")
class Item(){
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    @Column(name="item_name")
    private String itemName;

    @Column(name="product_sku")
    private String productSku;

    @Column(name="item_json")
    private String itemJsonString;

    @Transient
    private ItemJson itemJson;

    //Getters and setters

}
Run Code Online (Sandbox Code Playgroud)

itemJsonString字段包含一个json字符串值,如 '{"key1":"value1","key2":"value2"}'

itemJson字段包含映射到json字符串的相应对象.

我从数据库中获取此实体对象,如下所示:

Item item = itemRepository.findOne(1L);    // Returns item with id 1
Run Code Online (Sandbox Code Playgroud)

现在,itemJson字段为null,因为它是一个瞬态字段.我必须使用Jackson的ObjectMapper手动设置它,如下所示:

itemJson = objectMapper.readValue(item.getItemJsonString(), ItemJson.class);
Run Code Online (Sandbox Code Playgroud)

我怎样才能这样做itemRepository.findOne(),当我这样做时,它返回一个Item对象,itemJson字段自动映射到json String?

java json jpa jackson

6
推荐指数
1
解决办法
2万
查看次数

根据Java中的某种条件确定实现类

我有一个接口“ Parent”,并且有多个类(例如Abc.java,Def.java和Xyz.java)实现了该接口。现在我想做这样的事情:

Parent factoryMethod(String condition){
    Parent p = null;
    if(condition.equals("Abc"))
        p = new Abc();
    else if(condition.equals("Def"))
        p = new Def();
    else if(condition.equals("Xyz"))
        p = new Xyz();
    return p;
}
Run Code Online (Sandbox Code Playgroud)

基本上,我将要实例化的类的名称作为参数传递给方法。这样做的最佳方法是什么?我应该为此使用反射吗?它不仅有3个课程,而且可能还有更多。所以我不想写if / else。

谢谢。

java class

5
推荐指数
1
解决办法
1481
查看次数