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

Développement Web en Java Discussion :

Pax Web Whiteboard welcomefile problem


Sujet :

Développement Web en Java

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut Pax Web Whiteboard welcomefile problem
    HI,

    j'ai un petit projet qui utilise Pax Web Whiteboard
    mais je n'arrive pas à activer les welcome pages

    le pom
    Code xml : 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
    <project xmlns="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/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
     
    	<parent>
    		<groupId>fr.sekaijin.osgi.web</groupId>
    		<artifactId>modules</artifactId>
    		<version>0.0.1</version>
    	</parent>
     
    	<artifactId>main</artifactId>
    	<name>Sekaijin :: Web :: Module :: Main</name>
    	<description>Sekaijin - Web - Main</description>
    	<packaging>bundle</packaging>
    	<properties>
    		<module.name>main</module.name>
    	</properties>
     
    	<dependencies>
    		<dependency>
    			<groupId>fr.sekaijin.osgi.web</groupId>
    			<artifactId>main.api</artifactId>
    			<version>0.0.1</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>servlet-api</artifactId>
    			<version>2.5</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.osgi</groupId>
    			<artifactId>org.osgi.core</artifactId>
    			<version>4.2.0</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.osgi</groupId>
    			<artifactId>org.osgi.compendium</artifactId>
    			<version>4.2.0</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.ops4j.pax.web</groupId>
    			<artifactId>pax-web-extender-whiteboard</artifactId>
    			<version>3.2.9</version>
    			<scope>provided</scope>
    		</dependency>
    	</dependencies>
     
    	<build>
    		<resources>
    			<resource>
    				<directory>src/main/resources</directory>
    				<filtering>true</filtering>
    			</resource>
    		</resources>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.felix</groupId>
    				<artifactId>maven-bundle-plugin</artifactId>
    				<version>3.2.0</version>
    				<extensions>true</extensions>
    				<configuration>
    					<instructions>
    						<Bundle-SymbolicName>${web.context}-${module.name}</Bundle-SymbolicName>
    						<Bundle-Name>${project.name}</Bundle-Name>
    						<Web-ContextPath>${web.context}</Web-ContextPath>
    						<Webapp-Context>${web.context}</Webapp-Context>
    					</instructions>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
    </project>
    le blueprint
    Code xml : 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"?>
    <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0">
     
    	<bean class="fr.sekaijin.osgi.web.main.Activator" init-method="start" destroy-method="stop">
    		<argument type="org.osgi.framework.BundleContext" ref="blueprintBundleContext" />
    	</bean>
     
    	<service id="welcomeFileService" interface="org.ops4j.pax.web.extender.whiteboard.WelcomeFileMapping">
    		<bean
    			class="org.ops4j.pax.web.extender.whiteboard.runtime.DefaultWelcomeFileMapping">
    			<property name="redirect" value="false" />
    			<property name="welcomeFiles">
    				<array>
    					<value>index.jsp</value>
    					<value>index.html</value>
    				</array>
    			</property>
    		</bean>
    	</service>
     
    	<service interface="org.ops4j.pax.web.extender.whiteboard.ResourceMapping">
    		<bean
    			class="org.ops4j.pax.web.extender.whiteboard.runtime.DefaultResourceMapping">
    			<property name="alias" value="/${web.context}/${module.name}/static" /> <!-- http path -->
    			<property name="path" value="/local" /> <!--Local Folder within jar -->
    		</bean>
    	</service>
    </blueprint>

    le fichier index.jsp est dans le dossier resources la propriété web.context = osgi
    lorsque j'ouvre l'url http://localhost:8181/osgi/index.jsp pas de pb le contenu de la jsp s'ouvre correctement et fonctionne sans difficulté. mais impossible d'ouvrir
    http://localhost:8181/osgi
    j'ai essayé avec la propriété redirect à true ou à false sans success.
    J'ai surement oublié un point mais je ne vois pas.

    A+JYT

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Bonjour

    Je me réponds bien que mes avancées ne soient pas totalement satisfaisante.

    mon erreur vient de la définition du web-contexte. je l'avais défini dans le bundle.
    via wab la présence de Web-ContextPath dans le manifest va entrainer la création d'un web context par le bundle déployer.

    les definition dans Pax Whiteboard sans référence au contexte implique l'utilisation du contexte par défaut de la plateforme.
    mon welcome mapping était donc défini dans le contexte par défaut en non dans celui de mon bundle.

    il faut donc le définir via Pax Web et non dans le bundle.
    J'ai passé les corrections directement dans le code.
    le pom
    Code xml : 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
    <project xmlns="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/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
     
    	<parent>
    		<groupId>fr.sekaijin.osgi.web</groupId>
    		<artifactId>modules</artifactId>
    		<version>0.0.1</version>
    	</parent>
     
    	<artifactId>main</artifactId>
    	<name>Sekaijin :: Web :: Module :: Main</name>
    	<description>Sekaijin - Web - Main</description>
    	<packaging>bundle</packaging>
    	<properties>
    		<module.name>main</module.name>
    	</properties>
     
    	<dependencies>
    		<dependency>
    			<groupId>fr.sekaijin.osgi.web</groupId>
    			<artifactId>main.api</artifactId>
    			<version>0.0.1</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>servlet-api</artifactId>
    			<version>2.5</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.osgi</groupId>
    			<artifactId>org.osgi.core</artifactId>
    			<version>4.2.0</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.osgi</groupId>
    			<artifactId>org.osgi.compendium</artifactId>
    			<version>4.2.0</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.ops4j.pax.web</groupId>
    			<artifactId>pax-web-extender-whiteboard</artifactId>
    			<version>3.2.9</version>
    			<scope>provided</scope>
    		</dependency>
    	</dependencies>
     
    	<build>
    		<resources>
    			<resource>
    				<directory>src/main/resources</directory>
    				<filtering>true</filtering>
    			</resource>
    		</resources>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.felix</groupId>
    				<artifactId>maven-bundle-plugin</artifactId>
    				<version>3.2.0</version>
    				<extensions>true</extensions>
    				<configuration>
    					<instructions>
    						<Bundle-SymbolicName>${web.context}-${module.name}</Bundle-SymbolicName>
    						<Bundle-Name>${project.name}</Bundle-Name>
    						<!-- ne pas définir de Web-Context dans le manifest -->
    						<!--<Web-ContextPath>${web.context}</Web-ContextPath>-->
    						<!--<Webapp-Context>${web.context}</Webapp-Context>-->
    					</instructions>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
    </project>
    il faut donc définir le contexte dans blueprint et l'utiliser pour tous les mapping
    le blueprint
    Code xml : 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
    86
    87
    88
    89
    <?xml version="1.0" encoding="UTF-8"?>
    <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0">
     
    	<bean class="fr.sekaijin.osgi.web.main.Activator" init-method="start" destroy-method="stop">
    		<argument type="org.osgi.framework.BundleContext" ref="blueprintBundleContext" />
    	</bean>
     
            <!--référence au contexte l'absence de référence à un bean httpContext laisse whiteboard référencer ou créer le nécessaire.-->
    	<service interface="org.ops4j.pax.web.extender.whiteboard.HttpContextMapping">
    		<bean
    			class="org.ops4j.pax.web.extender.whiteboard.runtime.DefaultHttpContextMapping">
    			<property name="httpContextId" value="httpContext" />
    			<property name="path" value="${web.context}" />
    		</bean>
    	</service>
     
    	<service id="welcomeFileService" interface="org.ops4j.pax.web.extender.whiteboard.WelcomeFileMapping">
    		<bean
    			class="org.ops4j.pax.web.extender.whiteboard.runtime.DefaultWelcomeFileMapping">
    			<!-- Indique dans quel web context définir le mapping -->
    			<property name="httpContextId" value="httpContext" />
    			<property name="redirect" value="false" />
    			<property name="welcomeFiles">
    				<array>
    					<value>index.jsp</value>
    					<value>index.html</value>
    				</array>
    			</property>
    		</bean>
    	</service>
     
    	<service interface="org.ops4j.pax.web.extender.whiteboard.ResourceMapping">
    		<bean
    			class="org.ops4j.pax.web.extender.whiteboard.runtime.DefaultResourceMapping">
                            <!-- Indique dans quel web context définir le mapping -->
    			<property name="httpContextId" value="httpContext" />
    			<!--pas de ${web.context} dans l'alias -->
    			<property name="alias" value="/${module.name}/static" /> <!-- http path -->
    			<!--<property name="alias" value="/${web.context}/${module.name}/static" />-->
    			<property name="path" value="/local" /> <!--Local Folder within jar -->
    		</bean>
    	</service>
     
     
    	<!--Ajout du mapping des ressources par défaut nécessaire pour les ressources à la racine-->
    	<service interface="org.ops4j.pax.web.extender.whiteboard.ResourceMapping">
    		<bean
    			class="org.ops4j.pax.web.extender.whiteboard.runtime.DefaultResourceMapping">
    			<property name="httpContextId" value="httpContext" />
    			<property name="alias" value="/" /> <!-- http path -->
    			<property name="path" value="/" /> <!--Local Folder within jar -->
    		</bean>
    	</service>
     
    	<!-- Redirection vers la page 404 custom -->
    	<service interface="org.ops4j.pax.web.extender.whiteboard.ErrorPageMapping">
    		<bean
    			class="org.ops4j.pax.web.extender.whiteboard.runtime.DefaultErrorPageMapping">
    			<property name="httpContextId" value="httpContext" />
    			<property name="error" value="404" />
    			<property name="location" value="/404.html" />
    		</bean>
    	</service>
     
    	<!-- Redirection vers la page 403 custom -->
    	<service interface="org.ops4j.pax.web.extender.whiteboard.ErrorPageMapping">
    		<bean
    			class="org.ops4j.pax.web.extender.whiteboard.runtime.DefaultErrorPageMapping">
    			<property name="httpContextId" value="httpContext" />
    			<property name="error" value="403" />
    			<property name="location" value="/403.html" />
    		</bean>
    	</service>
     
    	<!-- cette section indique quels patterns doivent être traité comme jsp -->
    	<service interface="org.ops4j.pax.web.extender.whiteboard.JspMapping">
    		<bean
    			class="org.ops4j.pax.web.extender.whiteboard.runtime.DefaultJspMapping">
    			<property name="httpContextId" value="httpContext" />
    			<property name="urlPatterns">
    				<array>
    					<value>index.jsp</value>
    				</array>
    			</property>
    		</bean>
    	</service>
    </blueprint>

    Le résultat est le suivant
    le fichier index.jsp est dans le dossier resources la propriété web.context = osgi
    lorsque j'ouvre l'url http://localhost:8181/osgi/index.jsp pas de pb le contenu de la jsp s'ouvre correctement et fonctionne sans difficulté
    lorsque j'ouvre http://localhost:8181/osgi idem la jsp s'exécute

    reste un point qui reste à corriger.
    l'ouverture de http://localhost:8181/osgi/main/static/user.png affiche bien l'image
    mais
    http://localhost:8181/osgi/main/ affiche une erreur 404
    http://localhost:8181/osgi/main/static/ affiche une erreur 403
    http://localhost:8181/osgi/main/static affiche une page blanche (code http 200 OK)
    http://localhost:8181/osgi/main/static/index.html affiche la page index.html

    pour le 404 c'est normal aucun mapping défini vers cette url.
    pour le 403 je ne comprends pas vu qu'il y a un fichier index.html (je m'attendais à voir le fichier index.html comme le welcome mapping le laisse penser.)
    pour la page blanche c'est l'inconnue totale.

    je continue à investiguer.
    A+JYT

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/07/2014, 21h31
  2. Application karaf / pax web / jetty / jsp / extjs MVC
    Par sekaijin dans le forum Ext JS / Sencha
    Réponses: 0
    Dernier message: 05/08/2013, 17h54
  3. Réponses: 2
    Dernier message: 08/08/2003, 17h30
  4. [web] problème de communication
    Par Hermant dans le forum Web
    Réponses: 2
    Dernier message: 04/02/2003, 14h15

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