java - 404 with citrus 3.0 - Stack Overflow

admin2025-04-22  0

After migrating to latest citrus dependency, all my request mapping are giving 404. pom.xml:-

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=".0.0"
         xmlns:xsi=";
         xsi:schemaLocation=".0.0 .0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>your-artifact-id</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
        <springboot.version>3.3.2</springboot.version>
        <citrus.simulator.version>3.0.2</citrus.simulator.version>
    </properties>
    <dependencies>
    <dependency>
      <groupId>.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>.glassfish.jersey.core</groupId>
      <artifactId>jersey-client</artifactId>
    </dependency>
    <dependency>
      <groupId>.glassfish.jersey.core</groupId>
      <artifactId>jersey-common</artifactId>
    </dependency>
    <dependency>
      <groupId>.glassfish.jersey.inject</groupId>
      <artifactId>jersey-hk2</artifactId>
      <version>2.26</version>
    </dependency>
<dependency>
    <groupId>.citrusframework</groupId>
    <artifactId>citrus-simulator</artifactId>
    <version>3.0.2</version>
    <type>pom</type>
</dependency>
<dependency>
    <groupId>.citrusframework</groupId>
    <artifactId>citrus-simulator-starter</artifactId>
    <version>2.1.1</version>
</dependency>

<dependency>
    <groupId>jakarta.xml.soap</groupId>
    <artifactId>jakarta.xml.soap-api</artifactId>
    <version>3.0.2</version>
</dependency>
<dependency>
    <groupId>.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>.codehaus.groovy</groupId>
    <artifactId>groovy</artifactId>
    <version>2.5.23</version>
</dependency>
  </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Config:-

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import .citrusframework.simulator.http.HttpRequestAnnotationScenarioMapper;
import .citrusframework.simulator.http.HttpRequestPathScenarioMapper;
import .citrusframework.simulator.http.SimulatorRestAdapter;
import .citrusframework.simulator.http.SimulatorRestConfigurationProperties;
import .citrusframework.simulator.scenario.mapper.ContentBasedXPathScenarioMapper;
import .citrusframework.simulator.scenario.mapper.ScenarioMapper;
import .citrusframework.simulator.scenario.mapper.ScenarioMappers;
import .springframework.boot.SpringApplication;
import .springframework.boot.autoconfigure.SpringBootApplication;
import .springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import .springframework.context.annotation.Bean;
import .springframework.context.annotation.ComponentScan;
import .springframework.http.HttpStatus;
import com.consol.citrus.endpoint.EndpointAdapter;
import com.consol.citrus.endpoint.adapter.StaticEndpointAdapter;
import com.consol.citrus.http.message.HttpMessage;
import com.consol.citrus.message.Message;

import jakarta.xml.soap.MessageFactory;

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@componentscan(basePackages = {"com.example.demo.*"})
public class DemoApplication extends SimulatorRestAdapter {

@Override
public String urlMapping(SimulatorRestConfigurationProperties simulatorRestConfiguration) {
    return "**";
}

@Override
public EndpointAdapter fallbackEndpointAdapter() {
    return new StaticEndpointAdapter() {
        @Override
        protected Message handleMessageInternal(Message message) {
            return new HttpMessage().status(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    };
}

// Note these run on all requests in order, so avoid collisions!
@Override
public ScenarioMapper scenarioMapper() {
    return ScenarioMappers.of(new ContentBasedXPathScenarioMapper().addXPathExpression("//:request-id"),
            new HttpRequestPathScenarioMapper(), new HttpRequestAnnotationScenarioMapper());
}

public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
}
}

Scenario class:-

package com.example.demo.controller;

import .citrusframework.simulator.scenario.AbstractSimulatorScenario;
import .citrusframework.simulator.scenario.Scenario;
import .citrusframework.simulator.scenario.ScenarioDesigner;
import .springframework.core.io.ClassPathResource;
import .springframework.http.HttpStatus;
import .springframework.web.bind.annotation.RequestMapping;
import .springframework.web.bind.annotation.RequestMethod;

@Scenario("GetCircuit")
@RequestMapping(value = "/sim/accessMigration/v1/inventory/circuits/BBEC.000099..ATI", method = RequestMethod.GET)
public class TestClass extends AbstractSimulatorScenario {

@Override
public void run(ScenarioDesigner scenario) {

    scenario.http().receive().get();
    scenario.http().send().response(HttpStatus.OK).header("ContentType", "application/json")
            .payload(new ClassPathResource("datamanager/GetCircuit.json"));

}
}

Application.properties:- spring.application.name=demo

spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false
logging.level.springframework.web=DEBUG
logging.level.citrusframework=DEBUG

info.simulator.name=REST Simulator
logging.file=debug.log
logging.level.consol.citrus=DEBUG
logging.level.att.mso=DEBUG
logging.level.reflections.Reflections=ERROR

Enable Http REST support

citrus.simulator.rest.enabled=true
citrus.simulator.ws.enabled=true
citrus.simulator.ws.servlet.mapping=/services/ws/*

Default timeout setting

citrus.simulator.default.timeout=120000
citrus.simulator.defaultTimeout=120000

Default message template path

citrus.simulator.templatePath=templates

Default scenario name

citrus.simulator.defaultScenario=Default

Should Citrus validate incoming messages on syntax and semantics

citrus.simulator.templateValidation=true

management.endpoints.web.exposure.include=*

It gives 404 after upgrading to latest citrus framework and java 17.

转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1745268803a293447.html

最新回复(0)