Spring Boot application for Atlassian security is not starting

50 Views Asked by At

I have two Spring Boot application one is normal application which include another application as dependency. And in 2nd application I have written Jira security which needs to be added on 1st application.

Both separately working fine but the when I am adding 2nd app in 1st app it is showing below error:

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.atlassian.connect.spring.internal.request.oauth2.OAuth2JwtClientRegistrationRepository required a bean named 'entityManagerFactory' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)
    - @org.springframework.beans.factory.annotation.Qualifier("oauth2-jwt-impersonation")


Action:

Consider defining a bean named 'entityManagerFactory' in your configuration.

In my security application I have following classes:

@Component
public class JiraUtility {
    public AtlassianHostRestClients getAtlassianHostRestClients() {
        return (AtlassianHostRestClients) GetBean.context.getBean("atlassianHostRestClientsImpl");
    }

}

To get created bean we use application context aware:

@Component
public class GetBean implements ApplicationContextAware {
    public static ApplicationContext context;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        context = applicationContext;
    }
}

And oauth 2 implementation is as below:

@Component("oAuth2ClientRequestFilter")
public class OAuth2ClientRequestFilter implements ClientRequestFilter {

    @Autowired
    private AtlassianHostRestClients atlassianHostRestClients;

    @Autowired
    private AtlassianHostRepository hostRepository;

    private String userAccountId;

    @Override
    public void filter(ClientRequestContext requestContext) {
        AtlassianHostUser hostUser = AtlassianHostUser.builder(getHost(requestContext))
                .withUserAccountId(userAccountId)
                .build();
        String token = atlassianHostRestClients.getAccessToken(hostUser).getTokenValue();
        requestContext.getHeaders().add("Authorization", String.format("Bearer %s", token));
    }

    public String getUserAccountId() {
        return userAccountId;
    }

    public void setUserAccountId(String userAccountId) {
        this.userAccountId = userAccountId;
    }

    private AtlassianHost getHost(ClientRequestContext requestContext) {
        URI requestUri = requestContext.getUri();
        String baseUrl = String.format("%s://%s", requestUri.getScheme(), requestUri.getHost());
        return hostRepository.findFirstByBaseUrlOrderByLastModifiedDateDesc(baseUrl).get();
    }
}

And in pom.xml I have added below dependencies:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.atlassian.connect</groupId>
            <artifactId>atlassian-connect-spring-boot-starter</artifactId>
            <version>${atlassian-connect-spring-boot.version}</version>
        </dependency>
        <dependency>
            <groupId>com.atlassian.connect</groupId>
            <artifactId>atlassian-connect-spring-boot-jpa-starter</artifactId>
            <version>${atlassian-connect-spring-boot.version}</version>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.25</version>
        </dependency> 
</dependencies>

And in Main application I have just Spring boot starter class :

@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class, FreeMarkerAutoConfiguration.class})
@ComponentScan(basePackages = {"com"})
@EnableAutoConfiguration(exclude = {LiquibaseAutoConfiguration.class})
@ServletComponentScan(basePackages = "com")
public class AivApplication extends SpringBootServletInitializer implements WebMvcConfigurer {

 public static void main(String[] args) throws Exception {
        new SpringApplication(AivApplication.class).run(args);
    }
}

How can I do it using adding security application as dependency in Spring Boot application?

0

There are 0 best solutions below