Bon oubliez mon post précédent.
Juste un problème de version java.
Je vais essayer de te guider un peu quand j'aurai du temps DebutantWS.
Version imprimable
Bon oubliez mon post précédent.
Juste un problème de version java.
Je vais essayer de te guider un peu quand j'aurai du temps DebutantWS.
d'accord!
Merci
Est ce que tu pourrais préciser ta question DébutantWS?
Les web services offrent des services pour d'autres applications.
En gros tu peux à partir d'une application qui connait ton web service lui demander : exécute telle méthode avec tels paramétres et renvoye moi le résultat.
Sinon j'ai créé une autre discussion sur ce topic.
Le premier post liste un ensemble de liens utiles.
http://www.developpez.net/forums/d60...t-web-service/
Si ta question c'est comment mettre en oeuvre un client de WS, tu devrais y trouver ta réponse.
Après si j'ai un peu de temps je te ferai une explication détaillée.
Mais cette semaine j'ai peu accés au net et je bosse bcp.
Merci natoine pour tes explications ci dessus.
Je t'explique mon objectif:
J'ai un programme java (ou une application) que j'appelle liste.java et dont le résultat est une liste.. ( c'est à dire quand j'exécute liste.java, j'obtiens une liste de personnes).
Ma question est la suivante:
comment créer un service Web qui récupère cette liste et l'envoie à une servelet?
merci pour tout indication ou suggestion pour finir mon projet..
Bonjour,
j'ai exactement le même problème que asmoune..
Merci de me communiquer la solution quand tu l'auras :);)
Alors il faut déployer ton fichier liste.java en tant que WS.
Ta méthode qui renvoie la liste pourra être appelé par url et le résultat récupéré par un client qui connait ton WS.
Ta servlet peut très bien être ce client.
Dans mon cas, j'ai des portlets clients de WebService.
Je pense que le reste de ce dont tu as besoin est dans les tutos déjà indiqués et les posts précédents.
J'essaye de te rédiger une solution compléte ce WE si tu ne t'en es pas sorti.
Mais ça ne devrait pas être très compliqué. Courage. ;)
Merci natoine, c'est vraiment très gentil de ta part.
est ce que tu as un exemple (tout bete) d'un portlet tres simple qui appelle un service web?
si non j'ai essayé avec la portlet qui existe dans ce lien
http://www.jahia.net/jahia/webdav/si...Guide_v1.0.pdf
mais j'ai quelques soucis dessus..
dans le cas ou ta pas d'exemples à me donner, on va discuter le soucis que j'ai.
Merci beaucoup
Je suis de retour :yaisse2:
Ah tiens, ça m'étonne de ne pas être tombé sur ce tuto... bon ben c'est pas grave.
Je vais plutôt te développer mon cas perso :
Donc un portlet qui appelle un web service.
Dans mon cas, le Web service est contenu dans Axis, qui lui même est contenu comme une webApp de Tomcat.
Mon portlet est contenu par JBossPortal.
Voilà une capture de mon projet sous eclipse.
http://img87.imageshack.us/img87/707...rchihv4.th.pnghttp://img87.imageshack.us/images/thpix.gif
Dans SurveyStats.java, il y a une méthode doView et une méthode processAction.
C'est dans doView que je fais mes appels au WebService.
Dans processAction, je récupére les paramétres postés par les différents JSP qui fabriquent les différents "états" d'affichage de mon portlet.
Tu remarqueras aussi dans src le package localhost.axis.services.stats .
Ce package et son contenu sont auto-générés par Axis en suivant la procédure expliquée dans le tuto, utilisation de WSDL2 : http://karamimed.developpez.com/j2ee/tutoriels/axis/
Je copie colle la source de SurveyStats.java en fin de post.
Je mets aussi l'un de mes .jsp, ça peut t'aider pour la partie processAction.
Un peu plus en détail :
doView commence par créer le service :
Après, je n'ai plus qu'à faire appel aux méthodes de mon WS en appelant port.maMethod().Code:
1
2
3
4 StatsService _service = new StatsServiceLocator(); Stats port; try { port = _service.getstats();
Pour le reste, j'attends tes questions :mrgreen: .
J'espére que ça t'aidera.
SurveyStats.java :
view_surveys.jsp :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171 public class SurveyStats extends GenericPortlet { protected void doView(RenderRequest rRequest, RenderResponse rResponse) throws IOException, PortletException { StatsService _service = new StatsServiceLocator(); Stats port; try { port = _service.getstats(); rResponse.setContentType("text/html"); PortletRequestDispatcher prd; int _mode = -1; if(rRequest.getParameter("mode")!=null) _mode = Integer.parseInt(rRequest.getParameter("mode")); System.out.println("[Portlet interviewee] doView "+ _mode); int _id_survey; Object _survey; Object[] _sections; Object[] _surveys; Object[] _closed_surveys; String _state; String _validate; int _id_user; switch(_mode) { case Constants.VIEW_SURVEYS : //récupération de l'identifiant utilisateur _id_user = Integer.parseInt(rRequest.getParameter("_id_user")); rRequest.setAttribute("_id_user" , "" + _id_user); //appel au WS pour récupérer tous les surveys //ajout des surveys à request System.out.println("[Portlet] view_survey _id_user : " + rRequest.getParameter("_id_user")); _surveys = (Object[]) port.getOpenSurveys(); rRequest.setAttribute("_surveys", _surveys); for(int i=0;i<_surveys.length;i++) { int nbValidated = port.getHowManyHaveValidated(Integer.parseInt((String)((Object[])_surveys[i])[2])); rRequest.setAttribute("_how_many_validated_" + Integer.parseInt((String)((Object[])_surveys[i])[2]), "" + nbValidated); } _closed_surveys = (Object[]) port.getClosedSurveys(); rRequest.setAttribute("_closed_surveys", _closed_surveys); for(int i=0;i<_closed_surveys.length;i++) { int nbValidated = port.getHowManyHaveValidated(Integer.parseInt((String)((Object[])_closed_surveys[i])[2])); rRequest.setAttribute("_how_many_validated_" + Integer.parseInt((String)((Object[])_closed_surveys[i])[2]), "" + nbValidated); } prd = getPortletContext().getRequestDispatcher(rResponse.encodeURL("/WEB-INF/jsp/view_surveys.jsp")); prd.include(rRequest, rResponse); break; case Constants.VIEW_SURVEY_CONTENT : _id_user = Integer.parseInt(rRequest.getParameter("_id_user")); rRequest.setAttribute("_id_user" , "" + _id_user); _id_survey = Integer.parseInt(rRequest.getParameter("_id_survey")); System.out.println("[Portlet VIEW_SURVEY_CONTENT] id survey = " + _id_survey); //appel au web service pour récupération du questionnaire _survey = (Object)port.getSurvey(_id_survey); rRequest.setAttribute("_survey", _survey); _state = port.getCurrentState(_id_survey); rRequest.setAttribute("_state" , _state); String _openDate = port.getOpenedDate(_id_survey).toString(); rRequest.setAttribute("_opened_date" , _openDate); if(port.getCurrentStateId(_id_survey)==3) rRequest.setAttribute("_closed_date", port.getClosedDate(_id_survey).toString()); rRequest.setAttribute("how_many_validated" , rRequest.getParameter("how_many_validated")); //appel au WebService pour récupération des sections (avec les questions à l'intérieur) _sections = (Object[])port.getSections(_id_survey); rRequest.setAttribute("_sections", _sections); for(int i=0; i<_sections.length;i++) { String _id_section = ((String[])_sections[i])[0]; //récupération des questions Object[] _questions = (Object[])port.getQuestions(Integer.parseInt(_id_section)); rRequest.setAttribute("_questions" + _id_section, _questions); for(int j=0;j<_questions.length;j++) { String _id_question = ((String[])_questions[j])[0]; //récupération du nombre de réponses rRequest.setAttribute("_how_many_answered"+_id_question , "" + port.getHowmanyHaveAnswered(Integer.parseInt(_id_question))); //si question libre if(port.isFreeQuestion(Integer.parseInt(_id_question))) { //récupération des réponses Object[] _free_answers = port.getFreeAnswers(Integer.parseInt(_id_question), _id_survey); rRequest.setAttribute("_free_answers" + _id_question , _free_answers); } else { // récupération des réponses possibles Object[] _pas = (Object[])port.getPossibleAnswers(Integer.parseInt(_id_question)); rRequest.setAttribute("_pas" + _id_question , _pas); for(int k=0;k<_pas.length;k++) { int _nb_choosed = port.getHowManyChoosedThisAnswer(Integer.parseInt(((String[])_pas[k])[0]), Integer.parseInt(_id_question)); int _nb_choosed_validated = port.getHowManyChoosedAndValidatedThisAnswer(Integer.parseInt(((String[])_pas[k])[0]), Integer.parseInt(_id_question)); rRequest.setAttribute("_nb_choosed" + ((String[])_pas[k])[0] , _nb_choosed); rRequest.setAttribute("_nb_choosed_validated" + ((String[])_pas[k])[0] , _nb_choosed_validated); if(_nb_choosed>0) rRequest.setAttribute("_ischecked" + ((String[])_pas[k])[0] , 1 ); else rRequest.setAttribute("_ischecked" + ((String[])_pas[k])[0] , 0 ); } } } } prd = getPortletContext().getRequestDispatcher(rResponse.encodeURL("/WEB-INF/jsp/view_survey_content.jsp")); prd.include(rRequest, rResponse); break; default : //à décommenter après phase de test //prd = getPortletContext().getRequestDispatcher(rResponse.encodeURL("/WEB-INF/jsp/error.jsp")); //appel au WS pour récupérer tous les surveys rRequest.setAttribute("_id_user" ,"" + 1); _surveys = (Object[]) port.getOpenSurveys(); _closed_surveys = (Object[]) port.getClosedSurveys(); //ajout des surveys à request rRequest.setAttribute("_surveys", _surveys); rRequest.setAttribute("_closed_surveys", _closed_surveys); for(int i=0;i<_surveys.length;i++) { int nbValidated = port.getHowManyHaveValidated(Integer.parseInt((String)((Object[])_surveys[i])[2])); rRequest.setAttribute("_how_many_validated_" + Integer.parseInt((String)((Object[])_surveys[i])[2]), "" + nbValidated); } rRequest.setAttribute("_closed_surveys", _closed_surveys); for(int i=0;i<_closed_surveys.length;i++) { int nbValidated = port.getHowManyHaveValidated(Integer.parseInt((String)((Object[])_closed_surveys[i])[2])); rRequest.setAttribute("_how_many_validated_" + Integer.parseInt((String)((Object[])_closed_surveys[i])[2]), "" + nbValidated); } prd = getPortletContext().getRequestDispatcher(rResponse.encodeURL("/WEB-INF/jsp/view_surveys.jsp")); prd.include(rRequest, rResponse); break; } } catch (ServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void processAction(ActionRequest aRequest, ActionResponse aResponse) throws PortletException, IOException, UnavailableException { StatsService _service = new StatsServiceLocator(); Stats port; String _id_user = "" + aRequest.getParameter("_id_user"); aResponse.setRenderParameter("_id_user", _id_user); try { port = _service.getstats(); int _mode = Integer.parseInt(aRequest.getParameter("mode")); String id_survey; String how_many_validated; System.out.println("[PORTLET interviewee] processAction " + _mode); switch(_mode) { case Constants.VIEW_SURVEY_CONTENT : id_survey = "" + aRequest.getParameter("id_survey"); aResponse.setRenderParameter("_id_survey", id_survey); how_many_validated = "" + aRequest.getParameter("how_many_validated"); aResponse.setRenderParameter("how_many_validated", how_many_validated); break; default: break; } aResponse.setRenderParameter("mode", ""+_mode); } catch (ServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 <%@ page import="intermed.survey.stats.*" import="javax.portlet.*" import="java.util.List;" language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %> <portlet:defineObjects/> <table id="open_surveys_list"> <caption>Liste des questionnaires ouverts:</caption> <% Object _ob_id_user = (Object)renderRequest.getAttribute("_id_user"); String _id_user = (String)_ob_id_user; Object[] _surveys = (Object[])renderRequest.getAttribute("_surveys"); for(int i=0 ; i<_surveys.length ; i++) { Object ob_nbValidated = (Object)renderRequest.getAttribute("_how_many_validated_" + ((String[])_surveys[i])[2]); String nbValidated = (String)ob_nbValidated; %> <tr> <td> <a href="<portlet:actionURL portletMode='view'> <portlet:param name='id_survey' value='<%=((String[])_surveys[i])[2]%>'/> <portlet:param name='mode' value='<%=""+Constants.VIEW_SURVEY_CONTENT%>'/> <portlet:param name="_id_user" value="<%=""+_id_user%>"/> <portlet:param name="how_many_validated" value="<%="" + nbValidated %>"/> </portlet:actionURL>" title="<%=((String[])_surveys[i])[1] %>"> <%= ((String[])_surveys[i])[3] %> </a> </td> <td> Etat : </td> <td> <%= ((String[])_surveys[i])[4] %> </td> <td> Créé le : <%= ((String[])_surveys[i])[0]%> </td> <td> Validé par <%= "" + nbValidated %> utilisateurs </td> </tr> <% } %> </table> <table id="closed_surveys_list"> <caption>Liste des questionnaires fermés:</caption> <% _surveys = (Object[])renderRequest.getAttribute("_closed_surveys"); for(int i=0 ; i<_surveys.length ; i++) { Object ob_nbValidated = (Object)renderRequest.getAttribute("_how_many_validated_" + ((String[])_surveys[i])[2]); String nbValidated = (String)ob_nbValidated; %> <tr> <td> <a href="<portlet:actionURL portletMode='view'> <portlet:param name='id_survey' value='<%=((String[])_surveys[i])[2]%>'/> <portlet:param name='mode' value='<%=""+Constants.VIEW_SURVEY_CONTENT%>'/> <portlet:param name="_id_user" value="<%=""+_id_user%>"/> <portlet:param name="how_many_validated" value="<%="" + nbValidated %>"/> </portlet:actionURL>" title="<%=((String[])_surveys[i])[1] %>"> <%= ((String[])_surveys[i])[3] %> </a> </td> <td> Etat : </td> <td> <%= ((String[])_surveys[i])[4] %> </td> <td> Créé le : <%= ((String[])_surveys[i])[0]%> </td> <td> Fermé le : <%= ((String[])_surveys[i])[5]%> </td> <td> Validé par <%= "" + nbValidated %> utilisateurs </td> </tr> <% } %> </table>
Je relance ce sujet.
J'ai changé de machine.
J'ai refait une install toute propre (ubuntu 8.10).
Et du coup je me suis dit, pourquoi pas tester de passer à Tomcat 6?
Et ben là du coup je pleure.
Tomcat 6 super facile à installer avec les paquets.
Par contre pas moyen de déployer axis 1.4.
J'ai pourtant fait comme avant.
Hop le dossier webapps/axis au bon endroit.
Le fichier activation.jar dans WEB-INF/lib
Et pas moyen de voir axis dans les applis déployées de Tomcat 6...
Please HELP
Finalement je suis repassé sous Tomcat 5.5.
Par contre j'ai un nouveau problème.
Mes Web Services ne sont plus déployés quand je redémarre ma machine.
Comment faire pour qu'ils restent déployés d'un démarrage à un autre?