小编Orb*_*rby的帖子

找不到KieModule:org.default:artifact:1.0.0-SNAPSHOT

我在Spring Boot应用程序中使用以下drools配置文件从DataBase加载/执行规则,该数据库在本地运行正常但是当我尝试将应用程序部署到服务器时,我收到错误,说没有找到KieModule Bean.我将丢失的KieModule Bean添加到我的配置文件中,现在我又收到了另一个错误Failed to instantiate [org.kie.api.runtime.KieContainer]: Factory method 'kieContainer' threw exception; nested exception is java.lang.RuntimeException: Cannot find KieModule: org.default:artifact:1.0.0-SNAPSHOT.我的问题是1)为什么我需要这个Bean和2)为什么应用程序在没有缺少Bean的情况下在本地构建/运行?

如果它是部署应用程序所需的必需Bean,我是否需要通过向我的应用程序/ POM添加一些属性来专门为我的环境配置它?

public class DroolsDataBaseConfig {

    @Autowired 
    private DataService dataService;

    @PostConstruct
    public void loadResourcesFromDatabase() {       

        try {
            KieHelper helper = getKieHelper();       
            List<Rule> rulesFromDB = dataService.findAllRules();

            for (Rule rule : rulesFromDB){

                String ruleAsStr = rule.getRule();

                helper.addContent(ruleAsStr, ResourceType.DRL);             
            }

            helper.build(getKieServices().newKieBaseConfiguration());

        } catch (Exception ex) {
            log.error("Exception occured loading rules from Database. Exception is : " + ex);           
        }
     }

     @Bean …
Run Code Online (Sandbox Code Playgroud)

drools kie

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

JPA 悲观锁不起作用

我使用 Spring Boot、JPA、Oracle 12C 和下面的类型化查询来选择要处理的“新”项目。选择“新”项目后,我会更新其状态,使其不再符合选择条件,但我发现选取相同项目时存在并发问题。

在这里读到,我需要在查询上设置“LockModeType.PESSIMISTIC_WRITE”,以防止其他线程选择同一行,但它似乎不起作用。

我是否错过了下面的内容,或者我是否需要其他配置来防止并发线程从我的表中检索相同的行?问题是否与锁定级别或实体管理器未更新/刷新有关?

我的@Transactional服务:

@Override
@Transactional(isolation = Isolation.READ_COMMITTED, rollbackFor=RuntimeException.class)
public MyObject retrieveItemByStatus(StatusEnum status) {
    return myRepository.retrieveItemByStatus(status);
}
Run Code Online (Sandbox Code Playgroud)

我的存储库层中的查询:

@Override
public MyObject retrieveItemByStatus(StatusEnum status) {

    String sql = "SELECT t FROM myTable t WHERE status = :status ORDER BY id ASC";      
    try {
        TypedQuery<MyObject> query = em.createQuery(sql, MyObject.class).setParameter("status", status);
        query.setLockMode(LockModeType.PESSIMISTIC_WRITE);
        query.setFirstResult(0);
        query.setMaxResults(1);
        MyObject myObject = (MyObject) query.getSingleResult();
        if (myObject != null) {
            myObject.setStatus(StatusEnum.IN_PROGRESS);
            MyObject myUpdatedObject = em.merge(myObject);                              
            return myUpdatedObject;
        }
    } catch (IllegalArgumentException …
Run Code Online (Sandbox Code Playgroud)

oracle hibernate jpa locking transactions

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

JAXB ClassNotFoundException使用Java 11构建Spring Boot App 2.2.0

我已经使用Java 2.1.2(BUM-SNAPSHOT)和Java 11(下面的POM)创建了一个Spring Boot应用程序:

 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
  http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.BUILD-SNAPSHOT</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.mycompany</groupId>
<artifactId>Eureka-Service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Eureka-Service</name>
<description>Spring Boot Eureka Service</description>

<properties>
    <java.version>11</java.version>
    <spring-cloud.version>Greenwich.BUILD-SNAPSHOT</spring-cloud.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build> …
Run Code Online (Sandbox Code Playgroud)

java jaxb spring-boot java-11

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

JSON 无法构造 JSONConcatination 的实例:没有用于反序列化的字符串参数构造函数/工厂方法

我正在尝试使用以下 JSON 字符串创建一个带有另一个值映射的映射:

"{\"conditionField\":\"myFieldName\",\"conditionValue\":\"myFieldValue\",\"concatenationValues\":[\"fieldValue1\",\"fieldValue2\",\"fieldValue3\"]}"
Run Code Online (Sandbox Code Playgroud)

并在我尝试将其转换为 POJO 时获得以下 JsonMappingException:

com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of JSONConcatination: no String-argument constructor/factory method to deserialize from String value ('{"conditionField":"myFieldName","conditionValue":"myFieldValue","concatenationValues":["fieldValue1","fieldValue2","fieldValue3"]}')
 at [Source: "{\"conditionField\":\"myFieldName\",\"conditionValue\":\"myFieldValue\",\"concatenationValues\":[\"fieldValue1\",\"fieldValue2\",\"fieldValue3\"]}"; line: 1, column: 1]
Run Code Online (Sandbox Code Playgroud)

使用以下代码:

private final Map<String, Map<String, List<String>>> jsonResources = new HashMap<String, Map<String, List<String>>>(); 



ObjectMapper mapper = new ObjectMapper();           
JSONConcatination jsonConcatination = mapper.readValue(json, JSONConcatination.class);
Map<String, List<String>> values = new HashMap<String, List<String>>();
values.put(jsonConcatination.getConditionValue(), jsonConcatination.getConcatenationValues());
jsonResources.put(jsonConcatination.getConditionField(), values);


@Data
public class JSONConcatination {

    private String conditionField;

    private String conditionValue;

    private List<String> concatenationValues;

}
Run Code Online (Sandbox Code Playgroud)

java json

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

标签 统计

java ×2

drools ×1

hibernate ×1

java-11 ×1

jaxb ×1

jpa ×1

json ×1

kie ×1

locking ×1

oracle ×1

spring-boot ×1

transactions ×1