Hi,
Not able to inject resouceresolverfactory in following code.
I created an interface
public interface WriteService{
public void getSession();
{
And a class which implemented an interface
@Component(immediate=true) @Service(value = WriteSerive.class) public class WriteServiceImp implements WriteService { @Reference private ResourceResolverFactory resourceFactory; @Override public void getSession(){ try{ Map<String,Object> paramMap = new HashMap<String,Object>(); paramMap.put(ResourceResolverFactory.SUBSERVICE, "connectSession"); ResourceResolver rr = null; rr = resourceFactory.getServiceResourceResolver(paramMap); Sessionsession = rr.adaptTo(Session.class); } catch(Exception e){ } }
Any Suggestion?
Thanks in advance
Solved! Go to Solution.
Watch the video here - we do a step by step of everything you need:
You need to reference the system user and make sure you specify the symbolic bundle name as mentioned in the video
Views
Replies
Total Likes
Do you see anything related in the error.log?
Views
Replies
Total Likes
Also do realize that this code creates hanging sessions that you want to avoid
Views
Replies
Total Likes
Views
Replies
Total Likes
The way you get the resourceResolver is fine, however you must close it. The golden rule is "you create, you close".
Normally you can do this in a finally{} clause, or if you use 6.2 or above you can benefit from the AutoCloseable implementation.
Example here: https://github.com/heervisscher/htl-examples/blob/master/core/src/main/java/com/adobe/examples/htl/c...
In error.log :-
28.05.2017 08:49:37.850 *WARN* [qtp1248549286-25322] com.adobe.connect.osgi.cq.auth.ConnectUserManager Error creating/updating user
java.lang.NullPointerException: null
at com.adobe.connect.osgi.cq.auth.ConnectUserManager.createOrUpdateUser(ConnectUserManager.java:695)
at com.adobe.connect.osgi.cq.auth.ConnectAuthenticationHandler.extractCredentials(ConnectAuthenticationHandler.java:175)
at org.apache.sling.auth.core.impl.AuthenticationHandlerHolder.doExtractCredentials(AuthenticationHandlerHolder.java:75)
at org.apache.sling.auth.core.impl.AbstractAuthenticationHandlerHolder.extractCredentials(AbstractAuthenticationHandlerHolder.java:60)
at org.apache.sling.auth.core.impl.SlingAuthenticator.getAuthenticationInfo(SlingAuthenticator.java:718)
at org.apache.sling.auth.core.impl.SlingAuthenticator.doHandleSecurity(SlingAuthenticator.java:466)
at org.apache.sling.auth.core.impl.SlingAuthenticator.handleSecurity(SlingAuthenticator.java:451)
at org.apache.sling.engine.impl.SlingHttpContext.handleSecurity(SlingHttpContext.java:121)
at org.apache.felix.http.base.internal.service.ServletContextImpl.handleSecurity(ServletContextImpl.java:421)
at org.apache.felix.http.base.internal.dispatch.InvocationChain.doFilter(InvocationChain.java:57)
at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:124)
at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:61)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:499)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:745)
Views
Replies
Total Likes
Views
Replies
Total Likes
This looks a non-related error
Views
Replies
Total Likes
Views
Replies
Total Likes
Yes, I have configured the user mapping configuration in system console.
In osgi bundles, wherever the .loginAdministrstive(null) is called , i have replaced by below written codes:-
@Component(immediate=true) @Service(value = WriteSerive.class) public class WriteServiceImp implements WriteService { @Reference private ResourceResolverFactory resourceFactory; @Override public void getSession(){ try{ Map<String,Object> paramMap = new HashMap<String,Object>(); paramMap.put(ResourceResolverFactory.SUBSERVICE, "connectSession"); ResourceResolver rr = null; rr = resourceFactory.getServiceResourceResolver(paramMap); Sessionsession = rr.adaptTo(Session.class); } catch(Exception e){ } }
Views
Replies
Total Likes
But what is the issue you are having? That is not clear to me now.
Views
Replies
Total Likes
Actually,
At this line,
It throws java.lang.NullPointerException.
I think resourceFactory variable is not injected in osgi bundles..
Views
Replies
Total Likes
Views
Replies
Total Likes
Yes,I tried to debug and resourceResolverFactory is null throw java.lang.NullPointerException: null
Views
Replies
Total Likes
What do you see here?
/system/console/components
There should be a reason why the dependency can't be injected
Views
Replies
Total Likes
Post a Screen shot of your OSGI SLING MAPPING - i suspect issue is there.
Views
Replies
Total Likes
com.adobe.connect.osgi.service.connect-osgi-service:connectSession=connect
where connect is serviceuser.
Views
Replies
Total Likes
Watch the video here - we do a step by step of everything you need:
You need to reference the system user and make sure you specify the symbolic bundle name as mentioned in the video
Views
Replies
Total Likes
In /system/console/componenets
What i observed that:-
ccom.adobe.ClassName and its status is Satisfied
Views
Replies
Total Likes
Views
Likes
Replies