No Architecture Exit Points found for Java Project

Hello Sonar Community.

I installed SonarQube Server 2026.5 Enterprise yesterday and tried the new architecture features.

The first scan picked up the architecture of my project without any additional configuration and the connections are available. This is awesome :partying_face:

Then I enabled the Enterprise Architecture features and run another scan. But my project does not show any exit points. The documentation says Enterprise architecture | SonarQube Server | Sonar Documentation

SonarQube ships with an internal catalog of code signatures covering built-in APIs and the most common frameworks, in each supported language: C#, Java, JavaScript, Python, and TypeScript.

The project uses Spring Boot and for calls to other services it uses the RestTemplate. I would assume that this is a common framework for Java.

The build is executed like this and uses the sonar-maven-plugin 5.8.0.7211.

mvn clean install -DskipITs
SONAR_HOST_URL=XXX SONAR_TOKEN=XXX mvn -X sonar:sonar -Dsonar.log.level=DEBUG

What I found interesting after enabling the debug logs is the following lines in the logs

2026-09-30T13:39:15.132732Z 01O [DEBUG] Purging component not scanned: org.springframework.web.client.RestTemplate#getForObject(Ljava:lang:String;Ljava:lang:Class;[Ljava:lang:Object;)Ljava:lang:Object; @ null

2026-09-30T13:39:15.137035Z 01O [DEBUG] Purging component not scanned: org.springframework.boot.restclient.RestTemplateBuilder#rootUri(Ljava:lang:String;)Lorg:springframework:boot:restclient:RestTemplateBuilder; @ null

2026-09-30T13:39:15.147384Z 01O [DEBUG] Purging component not scanned: org.springframework.web.client.RestTemplate#exchange(Lorg:springframework:http:RequestEntity;Lorg:springframework:core:ParameterizedTypeReference;)Lorg:springframework:http:ResponseEntity; @ null

2026-09-30T13:39:15.151252Z 01O [DEBUG] Purging component not scanned: org.springframework.web.client.RestTemplate#postForEntity(Ljava:lang:String;Ljava:lang:Object;Ljava:lang:Class;[Ljava:lang:Object;)Lorg:springframework:http:ResponseEntity; @ null

Is there a list of supported frameworks and signatures available? So that I can check if the classes and methods we are using are supported? Or is this a problem with the Enterprise Architecture features since they are still in beta status.

Best Regards
Daniel

Hi Daniel @furti,

Thanks for posting, great to hear you like your Current Architecture.

Let’s see what we can do to get you started with your cross-project Enterprise Architecture.

Would it be possible to DM me your full debug logs so we can take a look? The snippet you sent is a red herring unfortunately.

Can you confirm that each project where you expect to see dependencies has also been scanned?

Could you also share some code snippets? If you can’t share actual code snippets, representative snippets will help. Again, you can DM me.

We plan to publish a list of supported Frameworks with our GA release, and we expect to release improved support for Spring in the next week or so.

In the meantime, you can extend the built in support by adding your own SDK, see here for details.

Thanks,

Paul

Hi Paul,

thanks for your quick reply. I did a bit more research and created two example projects where one calls the other. The good news is, Exit Point and Entry Point dedection works in genral out of the box even for the RestTemplate. The bad news (at least for us) it does not work out of the box the way we work :melting_face:

I have two projects

  • “sonar-architecture-receiver”: Is the server that provides the entrypoints for web requests
  • “sonar-architecture-caller”: Is the client part that uses the rest template to call the receiver

Receiver

HTTP Requests

Both Spring @GetMappings are dedected out of the box as entry points. But it seems like the @RequestMapping method on the class level is not supported.

@RestController
@RequestMapping("/api/hello")
public class HelloController
{

  @GetMapping("/")
  public String sayHello() throws SQLException

I would expect the sayHello method to produce a /api/hello/ entry point. But SonarQube shows it as “/”.

Database Calls

To test exit points to the database, I added two simple statements like this

private int callDatabase() throws SQLException
  {
    try (var connection = DriverManager.getConnection("jdbc:postgresql://dbserver:12345/mydb", "username", "password"))
    {
      try (var stmt = connection.createStatement())
      {
        try (var resultSet = stmt.executeQuery("SELECT 1"))
        {
          resultSet.next();
          return resultSet.getInt(1);
        }
      }
    }
  }

This is picked up by SonarQube properly. But what I don’t fully understand is how mapping these calls to a database works. It seems to me that I need to manually assign each SQL Statement to a System Component. This could be a lot of manual work in bigger projects.

Caller

HTTP Requests

Calls to Springs RestTemplate.getForObject are picked up by SonarQube.

public String getHello()
  {
    return restTemplate.getForObject("https://myservice.com/api/hello/", String.class);
  }

But calls to RestTemplate.exchange are not picked up by SonarQube.

public String testTestTemplateVariant1()
{
  var request = RequestEntity.get("/test/template1").build();

  return restTemplate.exchange(request, String.class).getBody();
}

And what also does not work is when the path is not directly passed to the method, but instead it is genreated by some other method or logic. For example this is not picked up by SonarQube.

  public Something getSomething(Long a, Long b) {
      UriComponents uri = fromUriString("/projects/{a}/merge_requests/{b}/approvals") //
         .buildAndExpand(a, b);

      return restTemplate.getForObject(uri.toUriString(), Something.class);
   }

I think a 100% of our RestTemplate calls do not pass the uri in a static way. This is why we have no Exit Points for HTTP Requests.

Database Calls

The project uses Spring Data to access the database. It seems like Spring Data is not supported yet.

I will DM you the build logs and source code for both projects so that you can have a closer look.

Best Regards
Daniel

@paul.hickey how can I send DMs in this forum? I could not find this feature.

Click my name where you mentioned me in your last message, and then click “Message”.

Or just email me direct, you have my email!

Hi Paul,

seems like I don’t have access to the Messaging feature. This is what I tried first clicking on your profile. I can see your badges and statistics. But there is no Message button for me.

I sent you a email with the projects and logs.

Got them, thanks Daniel!