Question

Selon le Documentation de jeu, il est possible de mettre une application PLAC dans un fichier de guerre et de le déployer sur WebSphere, mais j'ai des problèmes.

J'utilise le play war commande avec le --zip option, qui fonctionne correctement. Le fichier de guerre résultant a la bonne disposition (Web-Inf au niveau supérieur, avec mes pots déplacés vers Web-Inf / Lib).

Après avoir déployé le fichier de guerre sur mon serveur WebSphere, je modifie l'ordre de chargement de classe de l'application pour Parent Last afin qu'il utilise la version de Play de tous les libs qui confrontent. Et puis j'essaie de charger une page, n'importe quelle page, de mon application, et d'obtenir une erreur.

J'ai essayé de déployer des applications de démonstration et une nouvelle application vide de la même manière, mais encore une fois, je reçois juste une page vide qui dit Not found Get /. La seule chose dans le journal est WARN ~ 404 -> GET / (GET /).

Je l'ai essayé avec Play 1.2.3 et 1.2.4, WebSphere 7.0.0.0 et 7.0.0.19. J'ai également essayé de basculer les différentes options de déploiement dans WebSphere, bien que les options par défaut semblent qu'ils devraient fonctionner.

Quelqu'un a-t-il obtenu une application de lecture pour travailler dans WebSphere? Si c'est le cas, comment?

Était-ce utile?

La solution

Je l'ai enfin fonctionné. Je vais documenter mes étapes au cas où quelqu'un d'autre se heurtera à des problèmes similaires en déploiement d'une application de lecture sur WebSphere à l'avenir.

1 - Le premier problème était le 404. WebSphere ne transmet pas les demandes de root (/) à l'application à gérer (WTF?), Le correctif consiste donc à définir un itinéraire similaire dans votre fichier de routes:

GET    /*    Application.index

au lieu de (ou au-dessus de)

GET    /    Application.index

2 - Le prochain problème était les erreurs liées à la persistance (JPA) qui ne sont pas existantes. Play utilise JPA 2.0, tandis que WebSphere 7 utilise sa propre version personnalisée d'OpenJPA 1.0. Vous pouvez installer un pack de fonctionnalités pour JPA 2 et OSGI (Vous n'avez pas besoin de la partie OSGI, donc elle peut être ignorée). Notez que le pack de fonctionnalités nécessite que vous avez installé WebSphere 7.0.0.9 ou ultérieur. Cela signifie faire correspondre les packs de correctifs pour le serveur d'applications et le JDK groupé. IE Fix Pack 21 (le dernier à l'époque ou à l'écriture) pour le serveur et le JDK doit être installé avant d'installer le pack de fonctionnalités JPA. À la fin de l'installation du pack de fonctionnalités, il vous demandera si vous souhaitez exécuter l'outil de profil. Dis oui. Cet outil vous permettra de "augmenter" votre profil (le nœud de serveur sur lequel vous allez installer votre guerre). Augment!

3 - Créez un fichier de guerre qui fonctionnera dans WebSphere:

play war <appFolder> -o <outputFolder> --zip --%prod

Cela créera un dossier nommé <outputFolder> (une guerre explosée) et un fichier .war nommé <outputFolder>.War, avec l'application ID définie sur prod. La guerre explosée peut être supprimée.

L'exécution de cette commande sur Linux continue de mettre mon dossier Web-Inf dans un dossier sans nom (donc, en bas d'un niveau racine du fichier de guerre). En d'autres termes, au lieu de / web-inf /, il crée une structure comme // web-inf /. Quoi qu'il en soit, je le répare manuellement pour l'instant, en le ré-zipant correctement. Quelqu'un sait comment éviter ce problème?

4 - Installez le fichier de guerre dans WebSphere avec tous les paramètres par défaut de la console d'administration ... ou modifiez-les si vous savez ce que vous faites.

5 - Je ne suis pas tout à fait sûr de savoir si cette étape est nécessaire (ne change rien pour mon application particulière), mais tous les conseils que j'ai lus en ligne sur l'obtention d'applications de lecture dans WebSphere disent de le faire. Meh, ça ne peut pas faire mal. Cliquez sur votre application installée. Cliquez sur le lien "Class Charging and Update Detection". Sélectionnez ensuite l'option "Classes chargées avec le chargeur de classe locale (Parent Last)". D'accord. Sauvegarder.

6 - Ouvrez une page de navigateur à votre adresse (LocalHost: 9080 si l'exécution de WebSphere localement) et testez. À ce stade, cela devrait fonctionner! Avec un peu de chance. Bonne chance.

Autres conseils

Un problème courant avec le déploiement dans les conteneurs servlet est qu'à moins que vous ne déployiez votre application comme fichier de guerre racine, vous rencontrez souvent des problèmes. Êtes-vous sûr que votre fichier de guerre a été déployé afin que le chemin d'accès à l'application soit disponible en tant que /.

Ce fil est un problème courant rencontré

Comment utiliser "war.context" dans le fichier de configuration de Play Framework?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top