Skip to content

Commit 421a289

Browse files
author
letherman255
committed
putain de thread de merde
1 parent 3ffbb11 commit 421a289

File tree

11 files changed

+285
-0
lines changed

11 files changed

+285
-0
lines changed
Binary file not shown.
Loading
193 KB
Binary file not shown.
+118
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package fr.mcnanotech.bdd;
2+
3+
import java.sql.Connection;
4+
import java.sql.DriverManager;
5+
import java.sql.ResultSet;
6+
import java.sql.SQLException;
7+
import java.sql.Statement;
8+
import java.util.ArrayList;
9+
import java.util.List;
10+
11+
import javax.servlet.http.HttpServletRequest;
12+
13+
import com.sun.xml.internal.ws.api.message.Message;
14+
15+
public class TestJDBC
16+
{
17+
/* La liste qui contiendra tous les résultats de nos essais */
18+
private List<String> messages = new ArrayList<String>();
19+
20+
public List<String> executerTests(HttpServletRequest request)
21+
{
22+
/* Chargement du driver JDBC pour MySQL */
23+
try
24+
{
25+
messages.add("Chargement du driver...");
26+
Class.forName("com.mysql.jdbc.Driver");
27+
messages.add("Driver chargé !");
28+
}
29+
catch(ClassNotFoundException e)
30+
{
31+
messages.add("Erreur lors du chargement : le driver n'a pas été trouvé dans le classpath ! <br/>" + e.getMessage());
32+
}
33+
34+
/* Connexion à la base de données */
35+
String url = "jdbc:mysql://localhost:3306/gam";
36+
String utilisateur = "matthias";
37+
String motDePasse = "sin";
38+
Connection connexion = null;
39+
Statement statement = null;
40+
ResultSet resultat = null;
41+
try
42+
{
43+
messages.add("Connexion à  la base de données...");
44+
connexion = DriverManager.getConnection(url, utilisateur, motDePasse);
45+
messages.add("Connexion réussie !");
46+
47+
/* Création de l'objet gérant les requêtes */
48+
statement = connexion.createStatement();
49+
messages.add("Objet requète créé !");
50+
51+
/* Exécution d'une requête de lecture */
52+
resultat = statement.executeQuery("SELECT System_ID, Username, Password, MDL_ID, Name, Surname FROM users;");
53+
messages.add("Requète \"SELECT System_ID, Username, Password, MDL_ID, Name, Surname FROM users;\" effectuée !");
54+
55+
/* Récupération des données du résultat de la requête de lecture */
56+
while(resultat.next())
57+
{
58+
int System_ID = resultat.getInt("System_ID");
59+
String Username = resultat.getString("Username");
60+
String Password = resultat.getString("Password");
61+
int MDL_ID = resultat.getInt("MDL_ID");
62+
String Name = resultat.getString("Name");
63+
String Surname = resultat.getString("Surname");
64+
/* Formatage des données pour affichage dans la JSP finale. */
65+
messages.add("Données retournées par la requète : System_ID = " + System_ID + ", Username = " + Username + ", Password = " + Password + ", MDL_ID = " + MDL_ID + ", Name = " + Name.toUpperCase() + ", Surname = " + Surname);
66+
}
67+
/* Exécution d'une requête d'écriture */
68+
int statut = statement.executeUpdate("INSERT INTO users (Username, Password, MDL_ID, Name, Surname) VALUES ('victorien68', 'lavicto', '513', 'bauer', 'victorien');", Statement.RETURN_GENERATED_KEYS);
69+
70+
/* Formatage pour affichage dans la JSP finale. */
71+
messages.add("Résultat de la requête d'insertion : " + statut + ".");
72+
resultat = statement.getGeneratedKeys();
73+
while(resultat.next())
74+
{
75+
messages.add("ID retourné lors de la requête d'insertion :" + resultat.getInt( 1 ) );
76+
}
77+
}
78+
catch(SQLException e)
79+
{
80+
messages.add("Erreur lors de la connexion : <br/>" + e.getMessage());
81+
}
82+
finally
83+
{
84+
messages.add("Fermeture de l'objet ResultSet.");
85+
if(resultat != null)
86+
{
87+
try
88+
{
89+
resultat.close();
90+
}
91+
catch(SQLException ignore)
92+
{}
93+
}
94+
messages.add("Fermeture de l'objet Statement.");
95+
if(statement != null)
96+
{
97+
try
98+
{
99+
statement.close();
100+
}
101+
catch(SQLException ignore)
102+
{}
103+
}
104+
messages.add("Fermeture de l'objet Connection.");
105+
if(connexion != null)
106+
{
107+
try
108+
{
109+
connexion.close();
110+
}
111+
catch(SQLException ignore)
112+
{}
113+
}
114+
}
115+
116+
return messages;
117+
}
118+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package fr.mcnanotech.main;
2+
3+
import java.util.concurrent.Executors;
4+
import java.util.concurrent.ThreadFactory;
5+
6+
/**
7+
* Hands out threads from the wrapped threadfactory with setDeamon(true), so the
8+
* threads won't keep the JVM alive when it should otherwise exit.
9+
*/
10+
public class DaemonThreadFactory implements ThreadFactory {
11+
12+
private final ThreadFactory factory;
13+
14+
/**
15+
* Construct a ThreadFactory with setDeamon(true) using
16+
* Executors.defaultThreadFactory()
17+
*/
18+
public DaemonThreadFactory() {
19+
this(Executors.defaultThreadFactory());
20+
}
21+
22+
/**
23+
* Construct a ThreadFactory with setDeamon(true) wrapping the given factory
24+
*
25+
* @param thread
26+
* factory to wrap
27+
*/
28+
public DaemonThreadFactory(ThreadFactory factory) {
29+
if (factory == null)
30+
throw new NullPointerException("factory cannot be null");
31+
this.factory = factory;
32+
}
33+
34+
public Thread newThread(Runnable r) {
35+
final Thread t = factory.newThread(r);
36+
t.setDaemon(true);
37+
return t;
38+
}
39+
}

pro/src/fr/mcnanotech/main/Test.java

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package fr.mcnanotech.main;
2+
3+
import java.util.concurrent.ExecutorService;
4+
import java.util.concurrent.Executors;
5+
import java.util.concurrent.ThreadFactory;
6+
7+
import javax.servlet.ServletContext;
8+
import javax.servlet.ServletContextEvent;
9+
import javax.servlet.ServletContextListener;
10+
11+
public class Test implements ServletContextListener
12+
{
13+
14+
private ExecutorService executor;
15+
public static ThreadFactory daemonFactory;
16+
17+
public void contextInitialized(ServletContextEvent arg0)
18+
{
19+
ServletContext context = arg0.getServletContext();
20+
int nr_executors = 1;
21+
daemonFactory = new DaemonThreadFactory();
22+
try
23+
{
24+
nr_executors = Integer.parseInt(context.getInitParameter("nr-executors"));
25+
}
26+
catch(NumberFormatException ignore)
27+
{}
28+
29+
if(nr_executors <= 1)
30+
{
31+
executor = Executors.newSingleThreadExecutor(daemonFactory);
32+
}
33+
else
34+
{
35+
executor = Executors.newFixedThreadPool(nr_executors, daemonFactory);
36+
}
37+
context.setAttribute("MY_EXECUTOR", executor);
38+
39+
40+
}
41+
42+
public void contextDestroyed(ServletContextEvent arg0)
43+
{
44+
ServletContext context = arg0.getServletContext();
45+
executor.shutdownNow(); // or process/wait until all pending jobs are done
46+
}
47+
48+
}

pro/src/fr/mcnanotech/main/Text.java

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package fr.mcnanotech.main;
2+
3+
public class Text extends Thread
4+
{
5+
public void run()
6+
{
7+
while(true)
8+
{
9+
System.out.println(System.currentTimeMillis());
10+
try
11+
{
12+
sleep(5000);
13+
}
14+
catch(InterruptedException e)
15+
{
16+
// TODO Auto-generated catch block
17+
e.printStackTrace();
18+
}
19+
}
20+
21+
}
22+
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package fr.mcnanotech.servlets;
2+
3+
import java.io.IOException;
4+
import java.util.List;
5+
6+
import javax.servlet.ServletException;
7+
import javax.servlet.http.HttpServlet;
8+
import javax.servlet.http.HttpServletRequest;
9+
import javax.servlet.http.HttpServletResponse;
10+
11+
import fr.mcnanotech.bdd.TestJDBC;
12+
import fr.mcnanotech.main.Text;
13+
import fr.mcnanotech.main.Test;
14+
15+
public class GestionTestJDBC extends HttpServlet
16+
{
17+
public static final String ATT_MESSAGES = "messages";
18+
public static final String VUE = "/WEB-INF/test_jdbc.jsp";
19+
20+
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
21+
{
22+
System.out.println("2 tache !");
23+
/* Initialisation de l'objet Java et récupération des messages */
24+
TestJDBC test = new TestJDBC();
25+
List<String> messages = test.executerTests(request);
26+
27+
/* Enregistrement de la liste des messages dans l'objet requête */
28+
request.setAttribute(ATT_MESSAGES, messages);
29+
System.out.println("servlet apel� !");
30+
/* Transmission vers la page en charge de l'affichage des résultats */
31+
this.getServletContext().getRequestDispatcher(VUE).forward(request, response);
32+
System.out.println("GESTIONTEST");
33+
34+
35+
36+
}
37+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package fr.mcnanotech.servlets;
2+
3+
import javax.servlet.http.HttpServlet;
4+
import javax.servlet.http.HttpServletRequest;
5+
import javax.servlet.http.HttpServletResponse;
6+
7+
import fr.mcnanotech.main.Text;
8+
import fr.mcnanotech.main.Test;
9+
@SuppressWarnings("serial")
10+
public class SystemStartup extends HttpServlet {
11+
Text test2 = new Text();
12+
public void init() {
13+
14+
System.out.println("lancement du thread !");
15+
//Thread t = Test.daemonFactory.newThread(test2);
16+
test2.start();
17+
System.out.println("fin du thread !");
18+
19+
}
20+
}

sh+®ma/Apparition.txt

Whitespace-only changes.

sh+®ma/Blocage manettes.ms12

560 KB
Binary file not shown.

0 commit comments

Comments
 (0)