La migration JSF-Application Weblogic 12
Nous avons développé une Couture 2 Java EE 5 application et il fonctionne sur Weblogic 11g.
Maintenant j'ai essayé de déployer le même fichier WAR à la nouvelle Weblogic 12c (12.1.1.0 sur mon Windows 7 local de la machine) en suivant la même procédure que sur le précédent WLS, y compris le déploiement de la nécessaire JSF 1.2 la bibliothèque.
Le déploiement et le début de l'application fonctionne bien, mais quand j'ouvre l'URL dans le navigateur, j'obtiens une erreur 500 et le fichier journal indique l'exception suivante:
java.lang.UnsupportedOperationException
at javax.faces.application.Application.getResourceHandler(Application.java:287)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:588)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
...
L'opération en question dans la classe Application appartient à la version 2.0 de JSF, dont je ne comprends pas pourquoi le conteneur essaie de l'appeler depuis que je l'ai déclaré à utiliser JSF 1.2.
Les idées de ce que les causes du problème et de la façon simple de migrer un Java EE 5 application à WLS 12?
Modifier 1/2/12: Puisqu'il n'existe pas de réponses, peut-être un peu bounty aiderait? 😉 Non, sérieusement, il y a des détails que je peut être en mesure de fournir de m'aider à sortir de celui-ci?
Modifier 1/5/12: cj91 demande - le projet n'est pas Maven de la base, donc il n'y a pas de POM. Mais ici, c'est le descripteur de déploiement weblogic.xml:
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
<library-ref>
<library-name>jsf</library-name>
<specification-version>1.2</specification-version>
<implementation-version>1.2</implementation-version>
<exact-match>false</exact-match>
</library-ref>
</weblogic-web-app>
Et voici la liste des pots prises par l'ant:
commons-digester.jar
jboss-seam-debug.jar
jboss-seam-excel.jar
jboss-seam-ioc.jar
jboss-seam-mail.jar
jboss-seam-pdf.jar
jboss-seam-rss.jar
jboss-seam-ui.jar
jsf-facelets.jar
jxl.jar
richfaces-impl.jar
richfaces-ui.jar
standard.jar
jstl.jar
jsf-api.jar
commons-collections-3.2.1.jar
commons-lang.jar
jboss-seam.jar
persistence-api.jar
jta.jar
jsf-impl.jar
darkX.jar
glassX.jar
laguana.jar
antlr-runtime.jar
commons-beanutils.jar
core.jar
drools-templates.jar
drools-decisiontables.jar
drools-compiler.jar
drools-api.jar
drools-core.jar
janino.jar
jboss-el.jar
jboss-seam-remoting.jar
jbpm-jpdl.jar
mvel2.jar
richfaces-api.jar
spiffy-with_source-all-0.05.jar
SuperCSV-1.52.jar
commons-logging.jar
dom4j.jar
javassist.jar
cglib.jar
antlr.jar
slf4j-api.jar
slf4j-log4j12.jar
hibernate-core.jar
hibernate-search.jar
hibernate-commons-annotations.jar
hibernate-annotations.jar
hibernate-entitymanager.jar
hibernate-validator.jar
jboss-common-core.jar
concurrent.jar
lucene-core.jar
gwt-servlet.jar
Je suis sûr qu'il y a plus de pots en elle que nécessaire, mais c'est l'environnement dans lequel il fonctionne actuellement sur un WebLogic 10.3.5.
Je soupçonne le jsf et jstl pots d'être la source du problème, mais de les supprimer de la guerre n'a rien changé.
La question est toujours d' - pourquoi ne WLS 12 tente d'exécuter quelque chose de JSF 2.0?
Modifier 1/6/12: j'ai réussi à résoudre le problème d'origine - encore l'application ne fonctionne pas correctement (et encore c'est étrange pour moi, car je n'ai pas s'attendre à ce que l'on doit changer beaucoup de choses dans une application en cours d'exécution lors de la mise à jour vers une nouvelle version de WLS), mais je déclare ce cas de figure ici comme résolu.
Pour ceux qui sont intéressés, je l'ai fait, grâce à l'aide des réponses et quelques recherches sur google ces choses:
Changement weblogic.xml pour:
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<container-descriptor>
<prefer-web-inf-classes>false</prefer-web-inf-classes>
</container-descriptor>
<library-ref>
<library-name>jsf</library-name>
<specification-version>1.2</specification-version>
<implementation-version>1.2.9.0</implementation-version>
<exact-match>true</exact-match>
</library-ref>
</weblogic-web-app>
Supprimé l'pots de WEB-INF/lib:
jsf-impl.jar
jsf-api.jar
persistence-api.jar
jta.jar
jstl.jar
Dans faces-config.xml changer de vue du gestionnaire (en raison de l'exception IllegalStateException, voir ici):
<view-handler>org.ajax4jsf.application.AjaxViewHandler</view-handler>
Dans persistence.xml changement de la requête de l'usine de la classe (en raison d'ClassNotFoundException: org.mise en veille prolongée.hql.ast.HqlToken, voir ici)
<property name="hibernate.query.factory_class" value="org.hibernate.hql.classic.ClassicQueryTranslatorFactory"/>
OriginalL'auteur Alexander Rühl | 2011-12-20
Vous devez vous connecter pour publier un commentaire.
Vous devriez vous demander pourquoi vous mettez à niveau vers une version plus récente de conteneur sans mise à jour de votre application. Si la réponse est "parce que la base de code est trop grand" et votre ancien conteneur fonctionne parfaitement bien, le laisser seul.
Mais, il y a deux erreurs probables:
1) avez-vous des api jsf pots intégré dans votre web-inf/lib?
2) Êtes-vous sûr que vous avez le programme d'installation 1.2 soutenir la bonne? Si vous êtes en train de charger jsf2.0 classes, vous devrez peut-être utiliser un chargeur de classe qui lit 1.2 pots en premier.
EDIT:
Au minimum, ces pots peuvent être fournis par votre conteneur et ne doivent PAS être inclus dans votre site WEB-INF/lib:
Je suis assez certain que ces peut aussi causer des problèmes:
Un plus: l'Application.getResourceHandler() est quelque chose de JSF 2.0 - alors pourquoi est-il appelé lors de la JSF 1.2 a été spécifié comme l'exige la bibliothèque dans le descripteur de déploiement?
Vous pouvez poster votre POM? Je suis presque certain que vous êtes en cours d'exécution dans le numéro #1
Voir modifier dans le post original
ajout de la liste des pots je pense que vous devriez supprimer
OriginalL'auteur Jonathan S. Fisher
Oeil à la section "Déploiement de JSF 1.2 et JSTL Bibliothèques" à http://docs.oracle.com/cd/E24329_01/web.1211/e21049/configurejsfandjtsl.htm
Quand vous regardez dans localhost:7001/console sous les Déploiements, jsf est répertorié avec un type de Bibliothèque? Aussi est votre application-version vraiment seulement 1,2, d'habitude c'est plus précisément le nombre. Aussi, pouvez-vous vous débarrasser de la préférez-web-inf-classes?
Je ne l'ai, de la bibliothèque et aussi avec un ordre préalable à ma demande. Oui, je n'ai besoin que de 1,2 - mais quand j'ai mis de correspondance exacte pour vrai, ce qui a exactement la version (par exemple déployables bibliothèque du MANIFESTE dit 1.2.9.0)? Et, je n'ai pas testé le réglage préférez-web-inf-classes pour vrai. J'ai seulement demandé, pourquoi avoir la même configuration dans 10.5.3 ce n'est pas de travail en vertu de la nouvelle WLS?
OriginalL'auteur Chase