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

Spring devtools classloader limitations [SWF-1690] #867

Open
spring-operator opened this issue Dec 14, 2016 · 9 comments
Open

Spring devtools classloader limitations [SWF-1690] #867

spring-operator opened this issue Dec 14, 2016 · 9 comments

Comments

@spring-operator
Copy link
Contributor

spring-operator commented Dec 14, 2016

Alvise Vitturi opened SWF-1690 and commented

With spring boot devtools there are known limitations:

You may need to use Spring’s ConfigurableObjectInputStream in combination with Thread.currentThread().getContextClassLoader().

The class SerializedFlowExecutionSnapshot use the base classloader instead of the restart classloader


Affects: 2.4.4

Issue Links:

9 votes, 7 watchers

@spring-operator
Copy link
Contributor Author

Rossen Stoyanchev commented

I'll consider this although I'm concerned about potential side effects in more traditional application servers.

Phil Webb what's your take on this?

@spring-operator
Copy link
Contributor Author

Phil Webb commented

I think Rob changed something in Spring Session in a similar way to accommodate Devtools. I'm not sure what the impact will be on traditional app servers. My guess is that they will be fine but perhaps it should be an opt-in setting.

@spring-operator
Copy link
Contributor Author

David Melia commented

Hi,

I have a Spring Boot example on https://bitbucket.org/davidmelia/spring-boot-webflow-issue to illustrate this issue.

Thanks

@spring-operator
Copy link
Contributor Author

David Melia commented

@Rossen Stoyanchev I tried to test this today by pulling in

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-webflow</artifactId>
    <version>2.4.5.BUILD-SNAPSHOT</version>
</dependency>

however it didn't solve my problem in https://bitbucket.org/davidmelia/spring-boot-webflow-issue

Any ideas??

Thanks

@spring-operator
Copy link
Contributor Author

Rossen Stoyanchev commented

Hm, no idea actually. I simply implemented the suggestion. Were you able to confirm the fix is indeed in place and being used, e.g. stepping through with a debugger?

@spring-operator
Copy link
Contributor Author

Rossen Stoyanchev commented

David Melia thanks for the sample app. On closer look there are a number of places where a ClassLoader is used that may need to change. Modifying the one in FlowModelFlowBuilder#toClass does the trick for your example but overall this is going to take broader changes and more testing after which there is potential for regressions. So I am going to move the target to 2.5 only and revert the change made for 2.4.5.

@spring-operator
Copy link
Contributor Author

Rossen Stoyanchev commented

I experimented with the attached example using Spring Web Flow 2.5.0.BUILD-SNAPSHOT and Spring Boot 2.0.0.RC1 and did not run into any issues. I made changes to DaveFlowController and upon recompiling the application reloads as expected and the functionality changes. For changes to the flow definition, you need getFlowBuilderServicesBuilder().setDevelopmentMode(true).

If this still doesn't work for you please be more specific about the actual problem.

@spring-operator
Copy link
Contributor Author

Roland Mueller commented

Why wasn't the opt-in implemented as suggested by Phil Webb ?

This change breaks our application since we are using spring-webflow in OSGI bundles and these need the BundleClassLoader from Apache Felix. This is now replaced by Tomcats WebappClassLoader which leads to ClassNotFoundExceptions.

It looks like the change here seems some Spring Boot specific hack, now others like us need to implement hacks to reverse the change... :(

@spring-operator
Copy link
Contributor Author

Roland Mueller commented

See comment above, the change introduces bugs.

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

No branches or pull requests

2 participants