ppkarwasz edited a comment on pull request #16:
URL: 
https://github.com/apache/tomcat-jakartaee-migration/pull/16#issuecomment-806219210


   Sorry, I didn't explain the context of this PR. I am testing the deployment 
of our Java EE 8 applications on Tomcat 10 using the `WebAppClassLoader` 
changes introduced in [this 
commit](https://github.com/apache/tomcat/commit/abd1dead7804e99e3215e8e01a6cf7448a6b9f36).
 We want to avoid having to distribute two versions of our applications for 
those clients, who for some reason do not want to deploy Tomcat 9.x. Since our 
applications don't rely on `ServletContainerInitializer`s or Servlet 3.0 
annotations it should be possible to convert them on-the-fly.
   
   However a _"casual deploment"_ of our applications is impossible, since 
setting `<Loader jakartaConverter="TOMCAT" />` in Tomcat's configuration will 
rewrite also the API classes which are not provided by Tomcat (e.g. 
`javax.persistence` -> `jakarta.persitence`) and since our applications don't 
ship with jakartified versions of those APIs, this will result in a runtime 
error. 
   
   By `does not make the inverse transformation` I meant that the current 
Tomcat's classloader is unable to look for, e.g. 
`jakarta.persistence.EntityManager` in the `javax/persistence` directory (as a 
fallback). Jakartifying on-the-fly references to the Annotation, EL, JASPIC,  
Servlet and Websocket classes works just fine (the classes can be found in 
Tomcat's classloader), but whenever a reference to another API is jakartified, 
the base class is not found.
   
   I admit that I don't see any practical difference between the `TOMCAT` 
profile and the full `EE` profile, since they both list a strict superset of 
specs implemented by Tomcat. As I mentioned before, Tomcat's code references 
some additional APIs, like EJB, JPA and JAX-WS, but only if those APIs are in 
the same classloader as the server classes (cf. 
[`DefaultInstanceManager`](https://github.com/apache/tomcat/blob/2fa851bf833acaa2774c7bfe0ee500ec03ece62d/java/org/apache/catalina/core/DefaultInstanceManager.java#L71):
 in those cases I would use the `EE` profile for migration.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to