Hi,
We were see quite a number of issues within the error logs about sessions that aren't closing. I went through Adobe's article about debugging the sessions issues and we then decided to test the application over qa environment with debug enabled. We do quite a number or reverse replications and we also open sessions in case needed be but close them within the finally block. After running the application for few minutes and filtering the logs with session_analyzer jar below is the excerpt of the file. Should i be worried about it? Should i open a day care for the same? Any guidance would be appreciated.
ystemSession.<init>(CRXSystemSession.java:72)create(CRXSystemSession.java:60)sling.server.impl.jmx.ManagedRepository.activate(ManagedRepository.java:186)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)(NativeMethodAccessorImpl.java:57)DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)java.lang.reflect.Method.invoke(Method.java:606)org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:236)access$500(BaseMethod.java:37)$Resolved.invoke(BaseMethod.java:613).invoke(BaseMethod.java:496)ActivateMethod.invoke(ActivateMethod.java:149)manager.ImmediateComponentManager.createImplementationObject(ImmediateComponentManager.java:251)Component(ImmediateComponentManager.java:119)AbstractComponentManager$Registered.getService(AbstractComponentManager.java:1694)ImmediateComponentManager.getService(ImmediateComponentManager.java:681)framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:308)Service(ServiceRegistrationImpl.java:219)y.getService(ServiceRegistry.java:320)Felix.getService(Felix.java:3556)BundleContextImpl.getService(BundleContextImpl.java:468)osgi.util.tracker.ServiceTracker.addingService(ServiceTracker.java:411)apache.aries.jmx.whiteboard.Activator$MBeanTracker.addingService(Activator.java:101)osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:932)864)AbstractTracked.trackAdding(AbstractTracked.java:256)(AbstractTracked.java:229)ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:894)apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)fireEventImmediately(EventDispatcher.java:793)ServiceEvent(EventDispatcher.java:543)Felix.fireServiceEvent(Felix.java:4401)registerService(Felix.java:3411)BundleContextImpl.registerService(BundleContextImpl.java:346)scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:660)44)ComponentService(AbstractComponentManager.java:688)$Unsatisfied.activate(AbstractComponentManager.java:1481).activateInternal(AbstractComponentManager.java:550)enable(AbstractComponentManager.java:261)config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:328)BundleComponentActivator.initialize(BundleComponentActivator.java:158)<init>(BundleComponentActivator.java:113)Activator.loadComponents(Activator.java:261)bundleChanged(Activator.java:179)framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:868)fireEventImmediately(EventDispatcher.java:789)BundleEvent(EventDispatcher.java:514)Felix.fireBundleEvent(Felix.java:4385)startBundle(Felix.java:2080)etActiveStartLevel(Felix.java:1279)rameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)java.lang.Thread.run(Thread.java:744): session# 0
Thanks
Solved! Go to Solution.
Views
Replies
Total Likes
Yes this should be a concerned. Make sure when you open a session or resourceresolver you also close it.
Views
Replies
Total Likes
Yes this should be a concerned. Make sure when you open a session or resourceresolver you also close it.
Views
Replies
Total Likes
Its best practice to close the Session when you are done with it. For example - consider this code:
public
String SearchCQForContent() {
try
{
//Invoke the adaptTo method to create a Session
ResourceResolver resourceResolver = resolverFactory.getAdministrativeResourceResolver(
null
);
session = resourceResolver.adaptTo(Session.
class
);
String fulltextSearchTerm =
"Geometrixx"
;
// create query description as hash map (simplest way, same as form post)
Map<String, String> map =
new
HashMap<String, String>();
// create query description as hash map (simplest way, same as form post)
map.put(
"path"
,
"/content"
);
map.put(
"type"
,
"cq:Page"
);
map.put(
"group.p.or"
,
"true"
);
// combine this group with OR
map.put(
"group.1_fulltext"
, fulltextSearchTerm);
map.put(
"group.1_fulltext.relPath"
,
"jcr:content"
);
map.put(
"group.2_fulltext"
, fulltextSearchTerm);
map.put(
"group.2_fulltext.relPath"
,
"jcr:content/@cq:tags"
);
// can be done in map or with Query methods
map.put(
"p.offset"
,
"0"
);
// same as query.setStart(0) below
map.put(
"p.limit"
,
"20"
);
// same as query.setHitsPerPage(20) below
Query query = builder.createQuery(PredicateGroup.create(map), session);
query.setStart(
0
);
query.setHitsPerPage(
20
);
SearchResult result = query.getResult();
// paging metadata
int
hitsPerPage = result.getHits().size();
// 20 (set above) or lower
long
totalMatches = result.getTotalMatches();
long
offset = result.getStartIndex();
long
numberOfPages = totalMatches /
20
;
//Place the results in XML to return to client
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();
//Start building the XML to pass back to the AEM client
Element root = doc.createElement(
"results"
);
doc.appendChild( root );
// iterating over the results
for
(Hit hit : result.getHits()) {
String path = hit.getPath();
//Create a result element
Element resultel = doc.createElement(
"result"
);
root.appendChild( resultel );
Element pathel = doc.createElement(
"path"
);
pathel.appendChild( doc.createTextNode(path ) );
resultel.appendChild( pathel );
}
//close the session
session.logout();
This is from the article:
http://helpx.adobe.com/experience-manager/using/using-query-builder-api1.html
Views
Replies
Total Likes
Views
Likes
Replies