2020-02-05, 19:17
  #1
Medlem
Hej!

Frsker skriva ett javaprogram dr man hmtar data ifrn databasen, skapar objekt (user) och dom objekten ska skrivas ut i XML format p tomcatservern. D jag anger filvgen fr jag dessvrre felmeddelanden som jag ej vet hur jag ska lsa. Jag kr med maven, knns som det spkar med ngon jarfil..

Ngon som vet ngot enklare stt att gra allt p fr ni grna dela med er


Kod:
 
package com.voit.labb2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("myresource")
public class MyResource {
	DbConnector db;
	Connection conn;
	List <User> userList;
   
    
    @GET
    @Path("/database")
    @Produces(MediaType.APPLICATION_XML)
    public List<User>getUserObj() throws Exception{
    	
    // Connecting to db
    db = new DbConnector();
    System.out.println("Test");
     // retriving objects from getUser method 
     userList = db.getUser(); 
     
     
     // Returning the list with objects
     return userList;
      
    }
}
U
User klassen
Kod:
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="user")
public class User {

	private int id;
	private String name;
	private String profession;
	
	public User(int id, String profession, String name ) {
		this.id = id;
		this.name = name;
		this.profession = profession;
	}
	public User() {}
	
	
	@XmlElement(name="Id")
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	@XmlElement(name="Name")
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@XmlElement(name="Profession")
	public String getProfession() {
		return profession;
	}
	public void setProfession(String profession) {
		this.profession = profession;
	}
}


Databas klassen

HTML-kod:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class DbConnector {
private Connection conn;
	
	
	private String url ="jdbc:mysql://localhost:3306/labb2";
	private String username = "root";
	private String password = "hejsan123";
	
	private List <User> list; // ObjectList
	private Statement stmt;
	private ResultSet res;
	
	// Connect to database
	public DbConnector() {
		
			try {
				conn = DriverManager.getConnection(url,username,password);
				System.out.println("Connected to db!");
			} catch (SQLException e) {
				e.printStackTrace();
			}
	}
	
	// adding users to list 
	public List<User> getUser() throws Exception{
		Class.forName("com.mysql.jdbc.Driver");
		list = new ArrayList();
		try {
				stmt = conn.createStatement();
				res = stmt.executeQuery("select * from user");
				
				while(res.next()) {
					User tempUser = convertToUserObj(res);
					list.add(tempUser);		
				}
					return list; // Alla 5 obejekt returnerade i lista 		
			
			}finally {
				stmt.close();
				res.close();
			}
		
		 
	}
	
	// Object converter
	private User convertToUserObj(ResultSet res) throws SQLException {
	
			int id = res.getInt("id");
			String name = res.getString("name");
			String profession = res.getString("profession");
			
			User tempUser = new User();
			
	                tempUser.setId(id);
	                tempUser.setName(name);
	                tempUser.setProfession(profession);
	                              
			return tempUser;
		}
	
	
	// print out data
	  public void getInfo(List<User> list) {
		  
		  for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i).getId() + " " + list.get(i).getName() + " "+ list.get(i).getProfession());
		}
	  }
}
Citera
2020-02-05, 19:18
  #2
Medlem
Detta r felmeddelandet

Kod:
java.sql.SQLExceptionNo suitable driver found for jdbc:mysql://localhost:3306/labb2
    
at java.sql.DriverManager.getConnection(Unknown Source)
    
at java.sql.DriverManager.getConnection(Unknown Source)
    
at com.voit.labb2.DbConnector.<init>(DbConnector.java:27)
    
at com.voit.labb2.MyResource.getUserObj(MyResource.java:28)
    
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    
at java.lang.reflect.Method.invoke(Unknown Source)
    
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(Re  sourceMethodInvocationHandlerFactory.java:52)
    
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaRe  sourceMethodDispatcher.java:124)
    
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaR  esourceMethodDispatcher.java:167)
    
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDis  patch(JavaResourceMethodDispatcherProvider.java:219)
    
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJav  aResourceMethodDispatcher.java:79)
    
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)
    
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)
    
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)
    
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253)
    
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
    
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
    
at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
    
at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
    
at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
    
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
    
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232)
    
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
    
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
    
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
    
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)
    
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)
    
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
    
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
    
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
    
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:609)
    
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:810)
    
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1623)
    
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    
at java.lang.Thread.run(Unknown Source)
Test
Loading 
class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
Feb 05, 2020 7:08:26 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Jersey Web Application] in context with path [/labb2] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException
    at com.voit.labb2.DbConnector.getUser(DbConnector.java:49)
    at com.voit.labb2.MyResource.getUserObj(MyResource.java:31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(Re  sourceMethodInvocationHandlerFactory.java:52)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaRe  sourceMethodDispatcher.java:124)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaR  esourceMethodDispatcher.java:167)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDis  patch(JavaResourceMethodDispatcherProvider.java:219)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJav  aResourceMethodDispatcher.java:79)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:609)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:810)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1623)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source) 
Citera
2020-02-05, 21:36
  #3
Medlem
supremanics avatar
Testa lgga
Kod:
Class.forName("com.mysql.jdbc.Driver");  
innan DriverManager.getConnection?
Citera
2020-02-06, 15:56
  #4
Moderator
Protons avatar
Citat:
Ursprungligen postat av Douknowme
Hej!

Frsker skriva ett javaprogram dr man hmtar data ifrn databasen, skapar objekt (user) och dom objekten ska skrivas ut i XML format p tomcatservern. D jag anger filvgen fr jag dessvrre felmeddelanden som jag ej vet hur jag ska lsa. Jag kr med maven, knns som det spkar med ngon jarfil..

Ngon som vet ngot enklare stt att gra allt p fr ni grna dela med er


Kod:
 
package com.voit.labb2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("myresource")
public class MyResource {
	DbConnector db;
	Connection conn;
	List <User> userList;
   
    
    @GET
    @Path("/database")
    @Produces(MediaType.APPLICATION_XML)
    public List<User>getUserObj() throws Exception{
    	
    // Connecting to db
    db = new DbConnector();
    System.out.println("Test");
     // retriving objects from getUser method 
     userList = db.getUser(); 
     
     
     // Returning the list with objects
     return userList;
      
    }
}
U
User klassen
Kod:
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="user")
public class User {

	private int id;
	private String name;
	private String profession;
	
	public User(int id, String profession, String name ) {
		this.id = id;
		this.name = name;
		this.profession = profession;
	}
	public User() {}
	
	
	@XmlElement(name="Id")
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	@XmlElement(name="Name")
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@XmlElement(name="Profession")
	public String getProfession() {
		return profession;
	}
	public void setProfession(String profession) {
		this.profession = profession;
	}
}


Databas klassen

HTML-kod:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class DbConnector {
private Connection conn;
	
	
	private String url ="jdbc:mysql://localhost:3306/labb2";
	private String username = "root";
	private String password = "hejsan123";
	
	private List <User> list; // ObjectList
	private Statement stmt;
	private ResultSet res;
	
	// Connect to database
	public DbConnector() {
		
			try {
				conn = DriverManager.getConnection(url,username,password);
				System.out.println("Connected to db!");
			} catch (SQLException e) {
				e.printStackTrace();
			}
	}
	
	// adding users to list 
	public List<User> getUser() throws Exception{
		Class.forName("com.mysql.jdbc.Driver");
		list = new ArrayList();
		try {
				stmt = conn.createStatement();
				res = stmt.executeQuery("select * from user");
				
				while(res.next()) {
					User tempUser = convertToUserObj(res);
					list.add(tempUser);		
				}
					return list; // Alla 5 obejekt returnerade i lista 		
			
			}finally {
				stmt.close();
				res.close();
			}
		
		 
	}
	
	// Object converter
	private User convertToUserObj(ResultSet res) throws SQLException {
	
			int id = res.getInt("id");
			String name = res.getString("name");
			String profession = res.getString("profession");
			
			User tempUser = new User();
			
	                tempUser.setId(id);
	                tempUser.setName(name);
	                tempUser.setProfession(profession);
	                              
			return tempUser;
		}
	
	
	// print out data
	  public void getInfo(List<User> list) {
		  
		  for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i).getId() + " " + list.get(i).getName() + " "+ list.get(i).getProfession());
		}
	  }
}
I de fallen du anvnder Tomcat r detr den som kommer st fr initieringen av din JDBC-driver.

Till att brja med, har du fixat en jdbc-driver fr MySQL? Br g att f tag p p mysqls sida.

Denna driver (en JAR) behver lggas till i din tomcat s den finns tillgnglig. Kolla p https://www.microfocus.com/documenta...0BF177FAE.html

Det r frvisso en drivis fr sql server dr, men principen r exakt densamma.

Prova drefter din kod igen och se om det funkar.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in