Hey,

Are you able to check my PR:
https://github.com/apache/tomee/pull/304 
<https://github.com/apache/tomee/pull/304>

And review the following test:
https://github.com/apache/tomee/pull/304/commits/3f59d382b12ebc17b2d1fc9e587486d55fc4a749
 
<https://github.com/apache/tomee/pull/304/commits/3f59d382b12ebc17b2d1fc9e587486d55fc4a749>

It creates a deployment with a servlet, a static file and a rest endpoint. All 
are reachable just fine. You can run it with:
mvn -Pall-adapters clean test-compile surefire:test@test-tomee-remote-plume 
-Dtest=RestWithServletsTest

The MP endpoints do not seem to interfere here. I might be missing something 
from your case…

Thanks!

Cheers,
Roberto

> On 31 Jan 2019, at 17:48, Roberto Cortez <radcor...@yahoo.com.INVALID> wrote:
> 
> Ideally, we should reach an integration state such as MP is always available 
> without requiring additional configuration, but without interfering with the 
> current deployments.
> 
> I agree that probably at this stage it would be safer to have some kind of 
> configuration to opt-in / opt-out, until we have a more stable environment. A 
> tricky thing is to find the right balance. Is it binary? It is either all or 
> nothing? Or do you have individual switches per spec? I see Config and Fault 
> Tolerance to be useful with little to none integration issues. The main 
> problems so far were always with the spec that change the web app in a way, 
> like health, openapi or metrics, which add additional endpoints.
> 
> Regarding the CXFRSFilter, I am looking into it right now and I’ve made a 
> series of tests. The filter is only added when you have REST resources in the 
> app. I can confirm that servlets mapped in “/some_path” work just fine. The 
> ones on “/*" do not and I was about to test around the DefaultServlet.
> 
> Look here:
> https://github.com/apache/tomee/blob/40105b482301461cf641d25529441333a2fa2778/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/CXFJAXRSFilter.java#L102-L136
>  
> <https://github.com/apache/tomee/blob/40105b482301461cf641d25529441333a2fa2778/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/CXFJAXRSFilter.java#L102-L136>
> 
> And here:
> https://github.com/apache/tomee/blob/40105b482301461cf641d25529441333a2fa2778/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/CXFJAXRSFilter.java#L82
>  
> <https://github.com/apache/tomee/blob/40105b482301461cf641d25529441333a2fa2778/tomee/tomee-jaxrs/src/main/java/org/apache/tomee/webservices/CXFJAXRSFilter.java#L82>
> 
> It does try to find a servlet mapping that matches the request in the Tomcat 
> Wrapper and if it finds one, it just proceeds with the chain call (except for 
> /*). If you notice there is a special case for 
> org.apache.catalina.servlets.DefaultServlet, that I’m going to debug next.
> 
> So, in theory, all mapped servlets except for /* and the default servlet 
> should execute properly. 
> 
> The /* is indeed problematic, since you don’t know what is in there and could 
> be effectively a rest endpoint. The only option I see is to do as you suggest 
> and to do the check the other way around, so check if the path is server by a 
> rest path and proceed with it and if not, just let it be handled by the 
> regular chain. It should be possible.
> 
>> On 31 Jan 2019, at 16:56, j4fm <james.m...@my-managed.net> wrote:
>> 
>> So I was thinking on this:
>> 
>> 1. It would be ideal to be able to configure if MP endpoints/filters are
>> enabled/disabled by default and then enabled/disabled per-context (i.e.
>> opt-out vs opt-in behaviour).  In TomEE MicroProfile edition, I expect it
>> would be enabled by default.  In Plus/Plume, I expect it would be disabled
>> by default and enabled per-webapp.
>> 
>> 2. With only 1. it would be a shame to not be able to make use of MP on
>> existing webapps.  I was thinking on possible options for resolving the
>> CXF/JAX-RS issue and had some ideas.
>> a. Not sure if possible, but if JAXRSInInterceptor could not raise a 404
>> exception and instead return to pass down the filter chain it could work.
>> b. The CXFRSFilter could do the same endpoint checks that
>> JAXRSInInterceptor does and avoid calling it in the first place for non-REST
>> paths.
>> c. CXFRSFilter could read an "exclude paths" filter configuration for
>> contexts to consider as not REST.
>> d. CXFRSFilter could check for an attribute set by a previous filter to
>> indicate not to process as a REST resource.
>> 
>> Not sure if you had something else in mind.  Let me know if I should raise a
>> ticket or can test something out.
>> 
>> 
>> 
>> --
>> Sent from: http://tomee-openejb.979440.n4.nabble.com/TomEE-Dev-f982480.html
> 

Reply via email to