Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support java 11 au runtime ? #593

Closed
landryb opened this issue Oct 29, 2021 · 16 comments
Closed

support java 11 au runtime ? #593

landryb opened this issue Oct 29, 2021 · 16 comments

Comments

@landryb
Copy link
Member

landryb commented Oct 29, 2021

sur debian bullseye, avec le jdk 11 venant d'adoptopenjdk, au runtime la webapp ne démarre pas:

2021-10-29 14:59:50,590 [main] ERROR / - nouser - norole -o.s.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/beans.xml]; nested exception is org.springframework.beans.FatalBeanException: Invalid NamespaceHandler class [org.apache.cxf.jaxrs.spring.NamespaceHandler] for namespace [http://cxf.apache.org/jaxrs]: problem with handler class file or dependent class; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:414)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)

probablement la meme erreur que georchestra/georchestra#3182 ?

@landryb
Copy link
Member Author

landryb commented Oct 29, 2021

--- a/cadastrapp/pom.xml
+++ b/cadastrapp/pom.xml
@@ -296,6 +296,11 @@
       <artifactId>jstl</artifactId>
       <version>1.2</version>
     </dependency>
+    <dependency>
+      <groupId>javax.annotation</groupId>
+      <artifactId>javax.annotation-api</artifactId>
+      <version>1.3.2</version>
+    </dependency>
     <dependency>
       <scope>provided</scope>
       <groupId>javax.servlet</groupId>
  • rebuild du war (avec java 1.8) ne semble pas corriger le problème.

essayer de builder cadastrapp avec java 1.11 semble échouer encore plus:

[ERROR] Failed to execute goal org.apache.cxf:cxf-java2wadl-plugin:3.0.4:parsejavadoc (parsejavadoc) on project cadastrapp: Execution parsejavadoc of goal org.apache.cxf:cxf-java2wadl-plugin:3.0.4:parsejavadoc failed

@landryb
Copy link
Member Author

landryb commented Oct 29, 2021

removing all the bits about javadoc from pom.xml; it will still badly fails :)

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project cadastrapp: Compilation failure: Compilation failure:
[ERROR] /data/src/georchestra/cadastrapp/cadastrapp/src/main/java/org/georchestra/cadastrapp/service/pdf/BordereauParcellaireController.java:[24,22] package javax.xml.bind does not exist
[ERROR] /data/src/georchestra/cadastrapp/cadastrapp/src/main/java/org/georchestra/cadastrapp/service/pdf/BordereauParcellaireController.java:[25,22] package javax.xml.bind does not exist
[ERROR] /data/src/georchestra/cadastrapp/cadastrapp/src/main/java/org/georchestra/cadastrapp/service/pdf/BordereauParcellaireController.java:[26,22] package javax.xml.bind does not exist

so it seems we need more bits for java 11 support at build time and run time. @pierrejego ?

@landryb
Copy link
Member Author

landryb commented Oct 29, 2021

après ajout de:

+    <dependency>
+      <groupId>javax.xml.bind</groupId>
+      <artifactId>jaxb-api</artifactId>
+      <version>2.2.11</version>
+    </dependency>

pas mieux, toujours échec, cette fois lors de l'étape war, il doit manque des morceaux non buildés par javadoc.

@pierrejego
Copy link
Member

Hello,
cette branche est en java11 -> https://github.com/georchestra/cadastrapp/tree/issue-554-clean
Mais j'ai encore le petit soucis d'importe csv avec l'addon mapfishapp

@landryb
Copy link
Member Author

landryb commented Oct 29, 2021

Hello, cette branche est en java11 -> https://github.com/georchestra/cadastrapp/tree/issue-554-clean Mais j'ai encore le petit soucis d'importe csv avec l'addon mapfishapp

ok je vais tester ca, merci :)

Edit: cette branche pour #554 builde bien, par contre au premier démarrage de la webapp hibernate se vautre:

Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing column [InformationRequest_requestId] in table [cadastrapp.request_information_object_request]

il y'a une colonne mais elle est nommée request_information_requestid ?

@landryb
Copy link
Member Author

landryb commented Oct 29, 2021

hibernate n'est pas sensé créer les tables nécessaires si elles n'existent pas ?

@pierrejego
Copy link
Member

Non pas par défaut, ça dépend de ce paramètre
validate

<prop key="hibernate.hbm2ddl.auto">validate</prop>

Met le a create si tu veux que ça créé les tables

validate: validate the schema, makes no changes to the database.
update: update the schema.
create: creates the schema, destroying previous data.
create-drop: drop the schema when the SessionFactory is closed explicitly, typically when the application is stopped.
none: does nothing with the schema, makes no changes to the database

@landryb
Copy link
Member Author

landryb commented Oct 29, 2021

ok, mais de ce que je comprends, auparavant avec la version précédente d'hibernate les tables existaient et étaient validées:

2021-10-29 11:22:49,826 [main] INFO  / - nouser - norole -o.h.tool.hbm2ddl.SchemaValidator - HHH000229: Running schema validator
2021-10-29 11:22:49,826 [main] INFO  / - nouser - norole -o.h.tool.hbm2ddl.SchemaValidator - HHH000102: Fetching database metadata
2021-10-29 11:22:49,943 [main] INFO  / - nouser - norole -o.h.tool.hbm2ddl.TableMetadata - HHH000261: Table found: cadastrapp.object_request
2021-10-29 11:22:49,944 [main] INFO  / - nouser - norole -o.h.tool.hbm2ddl.TableMetadata - HHH000037: Columns: [proprietaire, numero, commune, parcelle, section, type, comptecommunal, objectid, bp, rp]
2021-10-29 11:22:49,954 [main] INFO  / - nouser - norole -o.h.tool.hbm2ddl.TableMetadata - HHH000261: Table found: cadastrapp.request_information
2021-10-29 11:22:49,954 [main] INFO  / - nouser - norole -o.h.tool.hbm2ddl.TableMetadata - HHH000037: Columns: [reponseby, objectnumber, requestid, requestdate, askby, userid]
2021-10-29 11:22:49,961 [main] INFO  / - nouser - norole -o.h.tool.hbm2ddl.TableMetadata - HHH000261: Table found: cadastrapp.request_information_object_request
2021-10-29 11:22:49,961 [main] INFO  / - nouser - norole -o.h.tool.hbm2ddl.TableMetadata - HHH000037: Columns: [request_information_requestid, objectsrequest_objectid]
2021-10-29 11:22:49,967 [main] INFO  / - nouser - norole -o.h.tool.hbm2ddl.TableMetadata - HHH000261: Table found: cadastrapp.request_user_information
2021-10-29 11:22:49,967 [main] INFO  / - nouser - norole -o.h.tool.hbm2ddl.TableMetadata - HHH000037: Columns: [firstname, mail, codepostal, commune, adress, type, userid, cni, lastname]

ou alors, la nouvelle version d'hibernate génère des noms de table/colonnes qui ne sont pas compatibles avec le schéma précédent, ce qui risque de poser des problèmes pour les migrations/updates.

effectivement, si je mets update les tables sont updatées/créées mais les noms de colonnes ne correspondent pas a ce qu'il y'avait avant ? (c'est un exemple sur une table, je n'ai pas regardé les autres)

[localhost:5432] georchestra@georchestra=> \d cadastrapp.request_information_object_request
          Table "cadastrapp.request_information_object_request"
            Column             |  Type  | Collation | Nullable | Default
-------------------------------+--------+-----------+----------+---------
 request_information_requestid | bigint |           | not null |
 objectsrequest_objectid       | bigint |           | not null |

après, avec la nouvelle version d'hibernate le nom ne colle plus:

[localhost:5432] georchestra@georchestra=> \d cadastrapp.request_information_object_request
         Table "cadastrapp.request_information_object_request"
            Column            |  Type  | Collation | Nullable | Default
------------------------------+--------+-----------+----------+---------
 informationrequest_requestid | bigint |           | not null |
 objectsrequest_objectid      | bigint |           | not null |

c'est a surveiller ... mais en dehors de ca, cadastrapp démarre bien avec java11 au runtime. Pas nécessaire d'avoir DEBUG je pense pour le logging de swagger ;)

@jusabatier
Copy link
Collaborator

Pour le problème de Landry, ça doit pouvoir se régler en paramétrant la table de jointure :

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinTable(name = "request_information_object_request",
          joinColumns = {@JoinColumn(name = "request_information_requestid")},
          inverseJoinColumns = {@JoinColumn(name = "objectsrequest_objectid")}
  )
private Set<ObjectRequest> objectsRequest;

Dans https://github.com/georchestra/cadastrapp/blob/issue-554-clean/cadastrapp/src/main/java/org/georchestra/cadastrapp/model/request/InformationRequest.java#L46

@pierrejego
Copy link
Member

Je fais un test en rajoutant ça autrement dans le beans.xml

			<prop key="hibernate.implicit_naming_strategy">org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy</prop>
			<prop key="hibernate.physical_naming_strategy">org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy</prop>

ça devrait éviter la modification

@jusabatier
Copy link
Collaborator

Cette solution ajoute une dépendance envers Spring Boot il me semble.

@jusabatier
Copy link
Collaborator

jusabatier commented Nov 16, 2021

J'ai réussi à le faire fonctionner avec : https://github.com/jusabatier/cadastrapp/tree/issue-554-clean
Les noms de tables et séquence utilisés restent les mêmes qu'avant.
Dites moi si je fais une PR ?

Cependant en testant les demandes d'infos, j'ai une erreur lors de la génération :

2021-11-16 16:30:31,527 [http-nio-8680-exec-3] ERROR //cadastrapp/services/createDemandeFromObj - julien.sabatier - ROLE_SUPERUSER;ROLE_OPENADS_SOAP;ROLE_MAPSTORE_ADMIN;ROLE_TERRASSES_MANAGER;ROLE_CADASTRAPP_CNIL2;ROLE_USER;ROLE_ADMINISTRATOR;ROLE_OPENADS;ROLE_EXTRACTORAPP;ROLE_GN_ADMIN;ROLE_POSTGRESQL_ADMINISTRATOR -CAPEV -org.apache.fop.apps.FOUserAgent - I/O error while loading image. URI: http://localhost:8680/cadastrapp/services/getImageBordereau?parcelle=430157000AT0014. Reason: java.io.EOFException (See position 1:835)
2021-11-16 16:30:31,554 [http-nio-8680-exec-3] ERROR //cadastrapp/services/createDemandeFromObj - julien.sabatier - ROLE_SUPERUSER;ROLE_OPENADS_SOAP;ROLE_MAPSTORE_ADMIN;ROLE_TERRASSES_MANAGER;ROLE_CADASTRAPP_CNIL2;ROLE_USER;ROLE_ADMINISTRATOR;ROLE_OPENADS;ROLE_EXTRACTORAPP;ROLE_GN_ADMIN;ROLE_POSTGRESQL_ADMINISTRATOR -CAPEV -org.apache.fop.apps.FOUserAgent - Image not found. URI: http://localhost:8680/cadastrapp/services/getImageBordereau?parcelle=430157000AT0014. (No context info available)

Ca me génère un BP sans l'extension ".pdf", et en ouvrant celui-ci, l'image n'est pas générée.

@landryb Est-ce que tu as testé chez toi ?

@landryb
Copy link
Member Author

landryb commented Nov 16, 2021

il me semble que j'ai réussi a créer des BP, mais je ne sais plus bien sur quelle version c'était ni quelle version de java...

@jusabatier
Copy link
Collaborator

Les BP fonctionnent correctement, par contre j'ai cette erreur en les générant via la demande d'info.

@pierrejego
Copy link
Member

@jusabatier
Copy link
Collaborator

Oui, l'appel direct à l'API me renvoie bien l'image correspondante.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants