IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Spring Security avec Dynamic Web Project


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Par défaut Spring Security avec Dynamic Web Project
    bonjour,
    est t'il possible d'integrer spring security dans un projet java (n'est pas maven project ),
    j'utilise spring, hibernate et jsf,
    en fait l'authentification dans mon projet doit etre donnée selon le role de chaque utilisateur . (authentif+accés selon role)
    tous les documents que j'ai trouvé sont fait avec maven
    Toute aide est appréciée.
    Merci

  2. #2
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Salut,
    si ce que tu veux se fait avec maven, alors tu peux le faire sans maven, et les fichiers de dependaces tu les ajoutes manuellement
    dans ta classpath.

    Eric

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 80
    Par défaut
    Bonjour.
    Oui, bien sur que tu peux le faire.
    Seulement, la syntaxe du fichier de configuration de Spring Security pour récupérer les rôles depuis la BDD est différente à celle utilisée pour les récupérer depuis LDap.
    Je te conseille vivement d'aller sur le site de Spring Security pour voir les syntaxes.

    Cdlt.

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Par défaut
    Salut,
    apres plusieurs recherche j'ai trouvé un lien qui m'a aidé pour se mettre sur la bonne route mais il ya quelques erreur que j'arrive pas a les corriger surtout que c'est mon premier projet avec spring security
    en fait je travaille avec spring3+ hibernate4+JSF2(primefaces)
    j'espere que vous pouvez me corriger et j'apprécie votre effort

    voici l'erreur que j'aiobtenu que je run page login.xhtml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    GRAVE: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/application-context.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: Role, for columns: [org.hibernate.mapping.Column(userRoles)]
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1488)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:608)
    	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
    	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
    	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)
    	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    	at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    	at java.util.concurrent.FutureTask.run(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: Role, for columns: [org.hibernate.mapping.Column(userRoles)]
    	at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:314)
    	at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:292)
    	at org.hibernate.mapping.Property.isValid(Property.java:239)
    	at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:469)
    	at org.hibernate.mapping.RootClass.validate(RootClass.java:270)
    	at org.hibernate.cfg.Configuration.validate(Configuration.java:1283)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1734)
    	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1780)
    	at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:247)
    	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:373)
    	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:358)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1547)
    	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1485)
    	... 19 more
     
    sept. 09, 2014 11:20:18 AM com.sun.faces.config.ConfigureListener contextInitialized
    INFOS: Initialisation de Mojarra 2.1.7 (SNAPSHOT 20120206) pour le contexte «/Gestion_formation»
    sept. 09, 2014 11:20:19 AM com.sun.faces.spi.InjectionProviderFactory createInstance
    INFOS: JSF1048 : Présence d’annotations PostConstruct/PreDestroy  Les méthodes de beans gérés marquées avec ces annotations auront des annotations dites traitées.
    sept. 09, 2014 11:20:20 AM org.primefaces.webapp.PostConstructApplicationEventListener processEvent
    INFOS: Running on PrimeFaces 3.4.2
    sept. 09, 2014 11:20:20 AM org.primefaces.extensions.application.PostConstructApplicationEventListener processEvent
    INFOS: Running on PrimeFaces Extensions 0.7.1
    sept. 09, 2014 11:20:20 AM org.apache.catalina.core.StandardContext startInternal
    GRAVE: Error listenerStart
    sept. 09, 2014 11:20:20 AM org.apache.catalina.core.StandardContext startInternal
    GRAVE: Erreur de démarrage du contexte [/Gestion_formation] suite aux erreurs précédentes
    sept. 09, 2014 11:20:20 AM org.apache.catalina.core.ApplicationContext log
    INFOS: Closing Spring root WebApplicationContext
    sept. 09, 2014 11:20:20 AM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
    GRAVE: The web application [/Gestion_formation] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
    sept. 09, 2014 11:20:20 AM org.apache.coyote.AbstractProtocol start
    INFOS: Starting ProtocolHandler ["http-bio-8080"]
    sept. 09, 2014 11:20:20 AM org.apache.coyote.AbstractProtocol start
    INFOS: Starting ProtocolHandler ["ajp-bio-8009"]
    sept. 09, 2014 11:20:20 AM org.apache.catalina.startup.Catalina start
    INFOS: Server startup in 6547 ms

    application-context.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
    		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
     
       <!-- Data Source Declaration -->
    <bean id="dataSource"	class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    	<property name="driverClassName" value="com.mysql.jdbc.Driver" />
    	<property name="url" value="jdbc:mysql://localhost/pfess" />
    	<property name="username" value="root" />
    	<property name="password" value="" />
    </bean>
     
     
     
        <!-- Session Factory Declaration -->  
    <bean id="sessionFactory"  class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    		<property name="dataSource" ref="dataSource"/>
     
      		<property name="annotatedClasses">
      		<list>
     
                <value>rnu.isamm.pfe.model.Absence</value>
                <value>rnu.isamm.pfe.model.Affectation</value>
                <value>rnu.isamm.pfe.model.Administrateur</value>
                <value>rnu.isamm.pfe.model.Classe</value>
                <value>rnu.isamm.pfe.model.Enseignant</value>
    			<value>rnu.isamm.pfe.model.Formation</value>
        	  	<value>rnu.isamm.pfe.model.Matiere</value>
        	  	<value>rnu.isamm.pfe.model.Semestre</value>
        	  	<value>rnu.isamm.pfe.model.UniteEnseignement</value>
        	  	<value>rnu.isamm.pfe.model.Utilisateur</value>
        	  	<value>rnu.isamm.pfe.model.Salle</value>
        	  	<value>rnu.isamm.pfe.model.Horaire</value>
        	  	<value>rnu.isamm.pfe.model.Planning</value>
        	  	<value>rnu.isamm.pfe.model.Universite</value>
        	  	<value>rnu.isamm.pfe.model.Role</value>
      		</list>
    	</property>
     
    	<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
    	  <property name="hibernateProperties">
                     <value>
                    		hibernate.connection.driver_class=org.gjt.mm.mysql.Driver
    						hibernate.dialect=org.hibernate.dialect.MySQLDialect
    						hibernate.connection.username=root
    						hibernate.connection.url=jdbc:mysql://localhost:3306/pfess
    						hibernate.hbm2ddl.auto=update
    						hibernate.connection.password=
    						hibernate.c3p0.min_size=2
    						hibernate.c3p0.max_size=10
    						hibernate.c3p0.timeout=300
    						hibernate.c3p0.max_statements=0
    						hibernate.c3p0.idle_test_period=1800
    						hibernate.c3p0.acquire_increment=2
                     </value>
                </property>
    </bean>
     
        <!-- Transaction Manager is defined -->
     <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
           <property name="sessionFactory" ref="sessionFactory"/>
     </bean>
        <!-- Enable the configuration of transactional behavior based on annotations -->
       	 <tx:annotation-driven transaction-manager="transactionManager"/>
     
         <!-- Package needed to be scanned for annotation -->
          <context:component-scan base-package="rnu.isamm"/>
     
         <!-- Use annotation for configuration-->
            <context:annotation-config/>
            <context:spring-configured/>
     
     
     
     
    </beans>
    security-context.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?xml version="1.0" encoding="UTF-8"?>
        <beans:beans
            xmlns:sec="http://www.springframework.org/schema/security"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:beans="http://www.springframework.org/schema/beans"
            xsi:schemaLocation="
             http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
            http://www.springframework.org/schema/security
            http://www.springframework.org/schema/security/spring-security-3.1.xsd">
     
            <!-- Enable method level Spring Security by annotations  -->
            <sec:global-method-security pre-post-annotations="enabled" />  
            <sec:http auto-config="true" use-expressions="true">
     
                <!-- Page level Spring Security : Intercept access to resources in /pages/secure/** -->
                <sec:intercept-url pattern="/WebContent/**" access="hasRole('ROLE_DES')" />
     
                <!-- Page level Spring Security : Permit access to resources in /pages/unsecure/** -->
                <sec:intercept-url pattern="/pages/unsecure/**" access="permitAll"/>
     
                <!-- Page level Spring Security : Intercept access to resources in /** -->
                <sec:intercept-url pattern="/**" access="hasRole('ROLE_DES')"/>
     
                <!-- Page level Spring Security : Enable Primefaces -->
                <sec:intercept-url pattern="/javax.faces.resource/**" access="permitAll"/>
          
                <!-- Define login page for Spring Security -->      
                <sec:form-login login-page="/pages/unsecure/login.xhtml"/>
     
                <!-- Define logout properties for Spring Security -->
                <sec:logout invalidate-session="true" delete-cookies="true" logout-success-url="/"></sec:logout>
            </sec:http>
           
            <!-- Set customUserDetailsService class as the authentication Manager for Spring Security-->
            <sec:authentication-manager alias="authenticationManager">
                <sec:authentication-provider user-service-ref="customUserDetailsService">
                    <sec:password-encoder hash="plaintext"></sec:password-encoder>
                </sec:authentication-provider>
            </sec:authentication-manager>
     
             <!-- Inject authentication Manager to our LoginBean -->
            <beans:bean id="loginBean" name="loginBean" class="net.javabeat.managedController.LoginBean" scope="prototype">
                <beans:property name="authenticationManager" ref="authenticationManager"></beans:property>
            </beans:bean>
        </beans:beans>

    faces-config.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <faces-config 
    	xmlns="http://java.sun.com/xml/ns/javaee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
                  version="2.0">
     
        <application>
        	<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
        </application>
     
     
          <!-- navigation-rule for login.xhtml -->
            <navigation-rule>
                <from-view-id>/pages/unsecure/login.xhtml</from-view-id>
                <!-- navigation-case for method login() -->
                <navigation-case>
                    <from-outcome>correct</from-outcome>
                    <to-view-id>/layout_admin.xhtml</to-view-id>
                </navigation-case>
                <!-- navigation-case for method login() -->
                <navigation-case>
                    <from-outcome>incorrect</from-outcome>
                    <to-view-id>/pages/unsecure/login.xhtml</to-view-id>
                </navigation-case>
            </navigation-rule>
     
     
    </faces-config>
    web.xml


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     id="WebApp_ID" version="2.5">
      <display-name>jsf2Hibernate3Tomahowk</display-name>
     
     
     
    <welcome-file-list>
    <welcome-file>login.jsf</welcome-file>
    </welcome-file-list>
     
     <!-- Fichiers XML de configuration, servlet	-->
     <servlet>
      <servlet-name>Faces Servlet</servlet-name>
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
     </servlet>
     
     <!-- config servlet mapping -->
     <servlet-mapping>
      <servlet-name>Faces Servlet</servlet-name>
      <url-pattern>*.jsf</url-pattern>
     </servlet-mapping>
      <servlet-mapping>
      <servlet-name>Faces Servlet</servlet-name>
      <url-pattern>*.xhtml</url-pattern>
     </servlet-mapping>
     
    	<!-- le context du theme de l'application -->
    	<context-param>  
        <param-name>primefaces.THEME</param-name>  
        <param-value>start</param-value>  
    	</context-param> 
     
    	<!-- the spring configuration file -->
            <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>
                     /WEB-INF/application-context.xml
                    /WEB-INF/security-context.xml
                </param-value>
            </context-param>
     
    	<!-- add the listener classes -->
     		<listener>
      		<listener-class> org.springframework.web.context.ContextLoaderListener</listener-class>
       		</listener>
       		<listener>
     		<listener-class> org.springframework.web.context.request.RequestContextListener</listener-class>
       		</listener>
     
      		 <listener>
    		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    		</listener>
     
     
     
      <!-- ============== Filters ajax============= -->
     
     
     <!-- detecter le timeZone de systeme -->
    <context-param>
        <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
        <param-value>true</param-value>
    </context-param>
     
     
     
      <!-- Spring Security -->
            <filter>
                <filter-name>springSecurityFilterChain</filter-name>
                <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
            </filter>
            <filter-mapping>
                <filter-name>springSecurityFilterChain</filter-name>
                <url-pattern>/*</url-pattern>
            </filter-mapping>
     
     
     
     
    </web-app>
    merci

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 16
    Par défaut
    voila la structure de mon projet
    Nom : navig.png
Affichages : 833
Taille : 21,9 Ko

  6. #6
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    voici ce que l´erreur dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Could not determine type for: java.util.Set, at table: Role, for columns: [org.hibernate.mapping.Column(userRoles)]
    peux-tu nous montrer l´entite Role ?

    Eric

Discussions similaires

  1. Dynamic Web Project - checkout de SVN et projet non reconnu
    Par nicolas_isi dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 26/06/2009, 12h09
  2. Réponses: 9
    Dernier message: 28/05/2009, 23h29
  3. Executé un Dynamic Web project
    Par subzero82 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 23/06/2006, 22h22
  4. [WTP] Dynamic web project Eclipse 3.1 Apache5.5
    Par mschoum dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 22/02/2006, 19h52
  5. [j2ee] Eclipse + Dynamic Web Project
    Par Jorus dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 10/10/2005, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo