Comments (5)
(Not up to speed on any of the root causes, context, deeper issues, etc. but wanted to add this in case it is helpful.)
In any CDI application, if you put @Inject
on a method, it becomes an initializer method with corresponding rules about its invocation by the CDI container. When you mix this with JAX-RS, it can be surprising for sure.
from helidon.
That could well explain what I'm seeing.
So maybe this is simply pilot error on my part in misusing/not understanding the implications of @Inject
on methods. (I guess I'm used to seeing other annotations explicitly flagging init methods, like @PostConstruct
).
I'll go back to my example and make sure that doing the @Inject
on the constructor instead (and only there) works and, if so, I'll probably close this as PEBCAK.
from helidon.
This was definitely due to me misusing @Inject
on the resource methods.
The GreetService
constructor already has @Inject
. I added a @ConfigProperty
parameter to the constructor, saved the value in an instance field, and then changed the resource methods to use that and all is well.
from helidon.
Right; I mean the flow will be:
- {waves hands vaguely} a request comes into the JAX-RS implementation
- Jersey realizes a given resource has to be instantiated and delegates to the DI system in effect for that instantiation (the DI system is CDI in this case, not, say, HK2)
- CDI takes over the instantiation and follows its rules. One of those rules is to run initializer methods immediately after invoking the constructor.
- The resource class is now instantiated and Jersey resumes control and figures out what resource method to invoke, etc. etc.
from helidon.
Yes, that's all consistent with what I saw. The initial invocations of the methods with @Inject
--as part of constructing the object--did see the correctly-injected config property. The later calls, responding to a request, did not. That matches up with your description, as does why it works to do the injection in the annotated constructor and store the values in instance fields.
from helidon.
Related Issues (20)
- 4.x Add next() for io.helidon.webserver.http.ServerRequest HOT 3
- session-token-config-file ADP supplier is never selected
- 4.x: Can't resolve `com.google.protobuf:protoc:exe:osx-aarch_64:3.5.1-1` on MacOS 14 on apple silicon
- Upgrade runners to MacOS 14
- 4.x: @HelidonTest / @AddConfig* Provide a config parser by type HOT 1
- Adopt Jersey 3.1.7
- Contexts#wrap(ExecutorService) doesn't propagate OTEL span HOT 7
- MicroProfile Config 3.1 HOT 1
- 4.x The received message "send" should be capitalized in io.helidon.examples.webserver.websocket.MessageBoardEndpoint.
- helidon se 4 native-image build error: HelidonFlavor was found in the image heap.
- MicroProfile Telemetry 1.1
- MicroProfile Rest Client 3.0.1
- Config - HOCON mapped Map has keys detached with extra parent key
- Support Originating IP discovery in Access Logging HOT 3
- 4.x: add tests for multiple JDK releases
- `OpenTelemetryTracer#spanBuilder` always sets parent to active span; how can developers create a root span (with no parent)?
- 4.x: MP `ConfigSource.getOrdinal()` always returns 100 if default ordinals are used
- 4.x: MP Config does not correctly handling per property overriding with config profiles HOT 1
- Weld uses synchronized in ApplicationScopedContextualInstanceStrategy, so carrier thread is pinned HOT 1
- Add support for Helidon 4 MP client and server
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from helidon.