So.. if I don't have a web container, @Inject annotation works partially. In other words, it is not possible to use the new stuff if your have a service only container..
Great, another big issue in spec.
The JSR-299 specs are fairly clear on the subject. I specifies that an active context has to be present for invocations on beans using any of the built-in scopes (request, session, application, conversation) to be possible, or a ContextNotActiveException should be thrown. It doesn't require that all built-in scopes are available ALWAYS, only what should happen when they are not. Like Reza said, it's up to the well-behaved (and compliant) container to ensure this contract is fullfilled. It's up to you as a developer/architect to not design a system that relies on session-scoped dependencies in a system that doesn't have sessions. Kind of like trying to call HttpSession.getAttribute in an application that isn't a web application.
Then, of course, it depends on what you define a "service only" container as. If you are talking a "standard" web service application, that is of course a servlet application at the bottom so as long as you deploy and run it in a JEE6 compliant application server, you will have full access to request and sessions scopes during service invocations (on the server, that is).
This is pretty much analogous to how Spring handles request and session scoped beans. They can be used when the scopes exist, but you have to be aware of the running context when you design your application.