Rayan958
Messages postés32Date d'inscriptionjeudi 31 décembre 2015StatutMembreDernière intervention 8 janvier 2016
-
Modifié par Rayan958 le 1/01/2016 à 12:34
KX
Messages postés16760Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention12 février 2025
-
8 janv. 2016 à 19:06
Bonjour tous le monde,
J'accède à une ressource (http://localhost:8080/CountryCode/v1/e212/33) seulement dans mon logger j'ai un return null alors que je retourne bien quelque chose.
Je vous mets l'intégralité du code, je sais que ça va être long mais j'en suis désolé, je ne vois vraiment pas le problème...
CountriesUtil.java
public class CountriesUtil { private static final Logger logger = Logger.getLogger(CountriesUtil.class); private static final JSONArray ja = new JSONArray(); private static final Hashtable<String, String> name = new Hashtable<String, String>(); private static final Hashtable<String, String> alpha2 = new Hashtable<String, String>(); private static final Hashtable<String, String> alpha3 = new Hashtable<String, String>(); private static final Hashtable<String, String> e212 = new Hashtable<String, String>(); private static final Hashtable<String, String> latlon = new Hashtable<String, String>(); private static int size = 5; private static int nbCountries;
public static String getE212(String Number) { for (int i = size; i > 0; i--) { if (Number.length() >= i - 1) { String key = Number.substring(0, i - 1); logger.info("i: " + i + ", number: " + Number.length() + ", key: " + key); if (e212.containsKey(key)) return e212.get(key); } } return null; }
}
e212.java
@Path("/e212") @Api(value = "/e212", description = "Get Mobile Code Country (E212) from the phone number") @Produces({ "application/json", "application/xml" }) public class e212 {
private static final Logger logger = Logger.getLogger(e212.class);
Rayan958
Messages postés32Date d'inscriptionjeudi 31 décembre 2015StatutMembreDernière intervention 8 janvier 20161 1 janv. 2016 à 23:01
Merci à toi j'ai regardé ça attentivement ;)
Je débute donc oui le pom.xml je l'ai récupérer par hasard et au fil du temps, quand j'aurais compris à quoi servent ses dépendances je les enlèverais ;)
J'ai un autre soucis, j'ai créer une ressource /doc pour y faire apparaître mon swagger (en .json) j'ai créer une fonction de lecture getDoc mais je n'arrive pas à l'afficher : (Le fichier spécifié est introuvable)
KX
Messages postés16760Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention12 février 20253 020 Modifié par KX le 1/01/2016 à 23:53
" le pom.xml je l'ai récupérer par hasard et au fil du temps, quand j'aurais compris à quoi servent ses dépendances je les enlèverais" Quand on lit tes dépendances il y a beaucoup de déchet : utilisation de jboss sur un serveur tomcat, dépendances Scala uniquement pour Swagger, sans oublier les dépendances de servlet qui sont déjà fournies par le serveur...
Avec ton pom.xml le war faisait 30 Mo, avec ma proposition il n'en fait plus que 3 !
C'est pour ça que je t'ai fournie cette structure de projet, pour que tu partes du bon pied...
"j'ai créer une ressource /doc pour y faire apparaître mon swagger (en .json) j'ai créer une fonction de lecture getDoc mais je n'arrive pas à l'afficher" Il n'y a aucun intérêt à appeler une méthode Java pour lire une ressource statique.
Le fichier swagger.json peut être directement exposé par le serveur sans passer par la servlet, il n'y a aucun code à faire, il faut juste le mettre au bon endroit.
En mettant ton fichier dans src/main/webapp/doc/swagger.json tu y accéderas directement avec l'url http://localhost:8080/doc/swagger.json
Rayan958
Messages postés32Date d'inscriptionjeudi 31 décembre 2015StatutMembreDernière intervention 8 janvier 20161 2 janv. 2016 à 01:43
Merci à toi, j'en ai vraiment besoin de le récupérer comme ça sans indiquer le swagger.json. J'ai envi d avoir un countrycode/v1/doc
KX
Messages postés16760Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention12 février 20253 020 1 janv. 2016 à 18:15
Voici une "base propre" pour travailler avec le strict nécessaire.
J'ai pas forcément refait tout ce que tu avais codé, mais l'essentiel y est.
Tu peux démarrer ton serveur en utilisant le plugin Jetty :
mvn jetty:run
Les URL sont ensuite :
http://localhost:8080/rest/v1/countries
http://localhost:8080/rest/v1/countries/e212/208
Voici l'architecture du projet :
Le fichier countries.csv c'est la même chose que ton fichier countries.txt mais avec la première ligne en moins (les en-têtes de colonne), je l'ai placé à la racine de src/main/resources (hiérarchie standard en Maven)
pom.xml
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>rayan958</groupId><artifactId>country-server</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>country-server</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><dependencies><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-servlet</artifactId><version>1.19</version></dependency><dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-json</artifactId><version>1.19</version></dependency></dependencies><build><finalName>country-server</finalName><plugins><plugin><!-- Run the server using "mvn jetty:run" --><!-- http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html --><groupId>org.eclipse.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>9.3.6.v20151106</version></plugin></plugins></build></project>
Le bean suivant va permettre de générer automatiquement le JSON à partir de l'objet Java, ce qui évite de manipuler des JSONObject.
Si tu veux ajouter/supprimer/renommer la clé XXX dans le JSON généré il faut considérer la méthode getXXX associée.
Modifié par KX le 1/01/2016 à 23:53
Quand on lit tes dépendances il y a beaucoup de déchet : utilisation de jboss sur un serveur tomcat, dépendances Scala uniquement pour Swagger, sans oublier les dépendances de servlet qui sont déjà fournies par le serveur...
Avec ton pom.xml le war faisait 30 Mo, avec ma proposition il n'en fait plus que 3 !
C'est pour ça que je t'ai fournie cette structure de projet, pour que tu partes du bon pied...
"j'ai créer une ressource /doc pour y faire apparaître mon swagger (en .json) j'ai créer une fonction de lecture getDoc mais je n'arrive pas à l'afficher"
Il n'y a aucun intérêt à appeler une méthode Java pour lire une ressource statique.
Le fichier swagger.json peut être directement exposé par le serveur sans passer par la servlet, il n'y a aucun code à faire, il faut juste le mettre au bon endroit.
En mettant ton fichier dans src/main/webapp/doc/swagger.json tu y accéderas directement avec l'url http://localhost:8080/doc/swagger.json
2 janv. 2016 à 01:43