I am trying to display JSON data because I am using quickxml jackson. I can display JSON, but JSON gets into an infinite loop and in the log file I get an error like
ERROR [Org.apache.catalina.core.ContainerBase. [Jboss.web]. [Default is the host]. [/ EAD]. [spring]] (http-127.0.0.1-8080-1) Servlet.service () for the spring servlet threw an Exception: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.JsonMappingException $ Link from [Module "deployment.EAD .war: main "from the service module loader]
Here is my controller method.
@RequestMapping("/viewDashboard") @ResponseBody public ModelMap test(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, @RequestParam String name) { ModelMap modelMap = new ModelMap(); List<Instances> instances = viewDashboardServiceImpl.viewDashboard(); return modelMap.addAllAttributes(instances); }
Actually my Instance.java is related to Application.java and Environment.java
Below are my model.java
Here is my .java instance
@Id @GeneratedValue @Column(name = "instanceId") private long id; @Column(name = "name") private String instanceName; @ManyToOne @JoinColumn(name = "appId") private Applications applications; @ManyToOne @JoinColumn(name = "enviId") private Environments environments; @Column(name = "version") private String version;
Here is my Application.java
@Id @GeneratedValue @Column(name = "appId") private long id; @Column(name = "name") private String name; @Column(name = "ownerName") private String ownerName; @Column(name = "version") private String version; @OneToMany(mappedBy = "applications", targetEntity = Instances.class) private Set<Instances> instances;
Here is my Environment.java
@Id @GeneratedValue @Column(name = "enviId") private long id; @Column(name = "name") private String name; @Column(name = "ownerName") private String ownerName; @Column(name = "version") private String version; @OneToMany(mappedBy = "environments", targetEntity = Instances.class) private Set<Instances> instances;
Here is my JSON
{"instances":{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":{"id":1,"name":"SAP","ownerName":"Mou","version":"3.2.1abc","instances":[{"id":2,"instanceName":"SAP BW DEV1","applications":
As above, JSON continues to repeat the data. I also have a dependency in maven.
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.4.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.4.5</version> </dependency>
And I added the following snippet in the servlet.xml file.
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <property name="favorPathExtension" value="false" /> <property name="favorParameter" value="true" /> <property name="mediaTypes"> <value> json=application/json xml=application/xml </value> </property> </bean>