This conversation has been locked due to inactivity. Please create a new post.
This conversation has been locked due to inactivity. Please create a new post.
Hi everyone,
I'm new to aem and is still learning based on the training project adobe provided.
I try to create a new servlet so i can upload file to AWS s3 bucket, but it returns build error and i don't know how to solve it so really prefer some help.
build error message:
Here is what i added into the pom file.
pom.xml
error log:
[FelixLogListener]
LogService.org.apache.felix.http.jetty Bundles: Cannot start (org.apache.felix.log.LogException: org.osgi.framework.BundleException: Unable to resolve com.amazonaws.aws-java-sdk-osgi [586](R 586.0): missing requirement [com.amazonaws.aws-java-sdk-osgi [586](R 586.0)] osgi.wiring.package; (&(osgi.wiring.package=com.fasterxml.jackson.dataformat.cbor)(version>=2.12.0)(!(version>=3.0.0))) Unresolved requirements: [[com.amazonaws.aws-java-sdk-osgi [586](R 586.0)] osgi.wiring.package; (&(osgi.wiring.package=com.fasterxml.jackson.dataformat.cbor)(version>=2.12.0)(!(version>=3.0.0)))])
org.apache.felix.log.LogException: org.osgi.framework.BundleException: Unable to resolve com.amazonaws.aws-java-sdk-osgi [586](R 586.0): missing requirement [com.amazonaws.aws-java-sdk-osgi [586](R 586.0)] osgi.wiring.package; (&(osgi.wiring.package=com.fasterxml.jackson.dataformat.cbor)(version>=2.12.0)(!(version>=3.0.0))) Unresolved requirements: [[com.amazonaws.aws-java-sdk-osgi [586](R 586.0)] osgi.wiring.package; (&(osgi.wiring.package=com.fasterxml.jackson.dataformat.cbor)(version>=2.12.0)(!(version>=3.0.0)))]
Views
Replies
Total Likes
Hi @zonghuiliu ,
This is caused if the package imported is not exported by any bundle. The Import-Package declarations must be satisfied by the Export-package declaration of other included bundles in the Maven project.
To solve this add the package in the Export tag
If your archetype is using maven-bundle-plugin then use the below in your pom.xml
<Export-Package>
com.amazonaws.aws-java-sdk-osgi.*
</Export-Package>
If your archetype is using bnd-maven-plugin then use the below in your pom.xml
Export-Package: com.amazonaws.aws-java-sdk-osgi.*
Reference:
https://myaemlearnings.blogspot.com/2021/08/embedding-third-party-dependencyosgi.html
Thank you for your reply.
I'm using bnd-maven-plugin but i still have no idea where to add the export package.
Below is how i made the change.
I'm sorry for this newbie question but could you please tell me the right place to add the export package description.
pom.xml
Sorry for the late reply.
I've made the change to core/pom.xml and still got the same error.
I've read this tutorial Embed Third party dependency using bnd-maven-plugin (myaemlearnings.blogspot.com) but cannot find any description about export package.
Do i have to add the aws-java-sdk-osgi jar file into the project folder and where should i put it?Or is there anything i missed to do.
Thank you for your help in advance.
Sorry for interupting you again.
After several changes finally the build successed.
What i've done is i deleted the in-active aws-java-sdk-osgi jar file and add the description below into the core/pom.xml file.
My servlet file:
Cannot serve request to /bin/upload in BundledScriptServlet (/libs/sling/servlet/errorhandler/404.jsp)
0 TIMER_START{Request Processing}
1 COMMENT timer_end format is {<elapsed microseconds>,<timer name>} <optional message>
6 LOG Method=GET, PathInfo=null
6 TIMER_START{handleSecurity}
1481 TIMER_END{1472,handleSecurity} authenticator org.apache.sling.auth.core.impl.SlingAuthenticator@7000bacf returns true
1867 TIMER_START{ResourceResolution}
2192 TIMER_END{324,ResourceResolution} URI=/bin/upload resolves to Resource=NonExistingResource, path=/bin/upload
2201 LOG Resource Path Info: SlingRequestPathInfo: path='/bin/upload', selectorString='null', extension='null', suffix='null'
2201 TIMER_START{ServletResolution}
2205 TIMER_START{resolveServlet(/bin/upload)}
3278 LOG {0}: no servlet found
3348 TIMER_END{1140,resolveServlet(/bin/upload)} Using servlet org.apache.sling.servlets.get.DefaultGetServlet
3353 TIMER_END{1151,ServletResolution} URI=/bin/upload handled by Servlet=org.apache.sling.servlets.get.DefaultGetServlet
3357 LOG Applying Requestfilters
3363 LOG Calling filter: com.adobe.granite.resourceresolverhelper.impl.ResourceResolverHelperImpl
3370 LOG Calling filter: org.apache.sling.security.impl.ContentDispositionFilter
3374 LOG Calling filter: com.adobe.granite.csrf.impl.CSRFFilter
3384 LOG Calling filter: org.apache.sling.i18n.impl.I18NFilter
3388 LOG Calling filter: com.adobe.granite.httpcache.impl.InnerCacheFilter
3398 LOG Calling filter: org.apache.sling.rewriter.impl.RewriterFilter
3401 LOG Calling filter: com.adobe.cq.history.impl.HistoryRequestFilter
3693 LOG Calling filter: com.day.cq.wcm.core.impl.WCMRequestFilter
3709 LOG Calling filter: com.adobe.cq.wcm.core.components.internal.servlets.CoreFormHandlingServlet
3713 LOG Calling filter: com.adobe.granite.optout.impl.OptOutFilter
3722 LOG Calling filter: com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet
3731 LOG Calling filter: com.day.cq.dam.core.impl.servlet.DisableLegacyServletFilter
3739 LOG Calling filter: org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter
3744 LOG Calling filter: com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter
3747 LOG Calling filter: com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl
3949 LOG Calling filter: com.adobe.granite.rest.assets.impl.AssetContentDispositionFilter
3961 LOG Calling filter: com.adobe.granite.requests.logging.impl.RequestLoggerImpl
3967 LOG Calling filter: com.adobe.granite.rest.impl.servlet.ApiResourceFilter
3971 LOG Calling filter: com.day.cq.dam.core.impl.servlet.ActivityRecordHandler
3984 LOG Calling filter: com.day.cq.wcm.core.impl.warp.TimeWarpFilter
3993 LOG Calling filter: com.day.cq.dam.core.impl.assetlinkshare.AdhocAssetShareAuthHandler
4001 LOG Applying Componentfilters
4003 LOG Calling filter: com.day.cq.personalization.impl.TargetComponentFilter
4006 LOG Calling filter: com.day.cq.wcm.core.impl.page.PageLockFilter
4010 LOG Calling filter: com.day.cq.wcm.core.impl.WCMComponentFilter
4036 LOG Calling filter: com.adobe.granite.metrics.knownerrors.impl.ErrorLoggingComponentFilter
4040 LOG Calling filter: com.day.cq.wcm.core.impl.WCMDebugFilter
4051 TIMER_START{org.apache.sling.servlets.get.DefaultGetServlet#0}
4244 TIMER_END{186,org.apache.sling.servlets.get.DefaultGetServlet#0}
4443 LOG Filter timing: filter=com.day.cq.wcm.core.impl.WCMDebugFilter, inner=207, total=212, outer=5
4451 LOG Filter timing: filter=com.adobe.granite.metrics.knownerrors.impl.ErrorLoggingComponentFilter, inner=212, total=368, outer=156
4461 LOG Filter timing: filter=com.day.cq.wcm.core.impl.monitoring.PageComponentRequestFilter, inner=368, total=370, outer=2
4470 LOG Filter timing: filter=com.day.cq.wcm.core.impl.WCMComponentFilter, inner=370, total=401, outer=31
4478 LOG Filter timing: filter=com.day.cq.wcm.core.impl.page.PageLockFilter, inner=401, total=405, outer=4
4529 LOG Filter timing: filter=com.day.cq.dam.core.impl.assetlinkshare.AdhocAssetShareAuthHandler, inner=485, total=491, outer=6
4539 LOG Filter timing: filter=com.adobe.cq.dtm.reactor.impl.servlets.ClientLibraryFilter, inner=491, total=493, outer=2
4549 LOG Filter timing: filter=com.adobe.cq.dam.webdav.impl.io.DamWebdavRequestFilter, inner=493, total=494, outer=1
4559 LOG Filter timing: filter=com.day.cq.wcm.core.impl.warp.TimeWarpFilter, inner=494, total=502, outer=8
4569 LOG Filter timing: filter=com.day.cq.dam.core.impl.servlet.DamContentDispositionFilter, inner=502, total=503, outer=1
4579 LOG Filter timing: filter=com.day.cq.dam.core.impl.servlet.ActivityRecordHandler, inner=503, total=516, outer=13
4589 LOG Filter timing: filter=com.adobe.granite.rest.impl.servlet.ApiResourceFilter, inner=516, total=522, outer=6
4600 LOG Filter timing: filter=com.adobe.granite.requests.logging.impl.RequestLoggerImpl, inner=522, total=530, outer=8
4627 LOG Filter timing: filter=com.adobe.cq.projects.impl.servlet.ProjectContentDispositionFilter, inner=530, total=531, outer=1
4646 LOG Filter timing: filter=com.adobe.granite.rest.assets.impl.AssetContentDispositionFilter, inner=531, total=545, outer=14
4654 LOG Filter timing: filter=com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl, inner=545, total=746, outer=201
4663 LOG Filter timing: filter=com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter, inner=746, total=752, outer=6
4670 LOG Filter timing: filter=org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter, inner=752, total=757, outer=5
4679 LOG Filter timing: filter=org.apache.sling.distribution.servlet.DistributionAgentCreationFilter, inner=757, total=760, outer=3
4687 LOG Filter timing: filter=com.day.cq.dam.core.impl.servlet.DisableLegacyServletFilter, inner=760, total=770, outer=10
4696 LOG Filter timing: filter=com.adobe.cq.wcm.core.extensions.amp.internal.AmpModeForwardFilter, inner=770, total=772, outer=2
4705 LOG Filter timing: filter=com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet, inner=772, total=780, outer=8
4713 LOG Filter timing: filter=com.adobe.granite.optout.impl.OptOutFilter, inner=780, total=789, outer=9
4735 LOG Filter timing: filter=com.adobe.cq.wcm.core.components.internal.servlets.CoreFormHandlingServlet, inner=789, total=800, outer=11
4746 LOG Filter timing: filter=com.day.cq.wcm.core.impl.WCMRequestFilter, inner=800, total=815, outer=15
4755 LOG Filter timing: filter=com.adobe.cq.history.impl.HistoryRequestFilter, inner=815, total=1104, outer=289
4765 LOG Filter timing: filter=org.apache.sling.rewriter.impl.RewriterFilter, inner=1104, total=1110, outer=6
4776 LOG Filter timing: filter=com.adobe.granite.httpcache.impl.InnerCacheFilter, inner=1110, total=1122, outer=12
4786 LOG Filter timing: filter=org.apache.sling.i18n.impl.I18NFilter, inner=1122, total=1127, outer=5
4818 LOG Filter timing: filter=com.adobe.granite.csrf.impl.CSRFFilter, inner=1127, total=1138, outer=11
4832 LOG Filter timing: filter=org.apache.sling.security.impl.ContentDispositionFilter, inner=1138, total=1143, outer=5
5023 LOG Applying Error filters
5031 LOG Calling filter: org.apache.sling.i18n.impl.I18NFilter
5037 LOG Calling filter: org.apache.sling.rewriter.impl.RewriterFilter
5100 TIMER_START{handleError:status=404}
5653 TIMER_END{551,handleError:status=404} Using handler BundledScriptServlet (/libs/sling/servlet/errorhandler/404.jsp)
5895 LOG Adding bindings took 53 microseconds
7394 LOG Found processor for post processing ProcessorConfiguration: {contentTypes=[text/html], order=-1, active=true, valid=true, processErrorResponse=true, pipeline=(generator=Config(type=htmlparser, config={}), transformers=(Config(type=linkchecker, config={}), Config(type=mobile, config=JcrPropertyMap [node=Node[NodeDelegate{tree=/libs/cq/config/rewriter/default/transformer-mobile: { jcr:primaryType = nt:unstructured, component-optional = true}}], values={jcr:primaryType=nt:unstructured, component-optional=true}]), Config(type=mobiledebug, config=JcrPropertyMap [node=Node[NodeDelegate{tree=/libs/cq/config/rewriter/default/transformer-mobiledebug: { jcr:primaryType = nt:unstructured, component-optional = true}}], values={jcr:primaryType=nt:unstructured, component-optional=true}]), Config(type=contentsync, config=JcrPropertyMap [node=Node[NodeDelegate{tree=/libs/cq/config/rewriter/default/transformer-contentsync: { jcr:primaryType = nt:unstructured, component-optional = true}}], values={jcr:primaryType=nt:unstructured, component-optional=true}]), serializer=Config(type=htmlwriter, config={}))}
7947 TIMER_END{7945,Request Processing} Dumping SlingRequestProgressTracker Entries
From the image the servlet shows its satisfied but it should be in active state. Check the below sample servlet
import static org.apache.sling.api.servlets.ServletResolverConstants.SLING_SERVLET_METHODS;
import static org.apache.sling.api.servlets.ServletResolverConstants.SLING_SERVLET_PATHS;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.osgi.service.component.annotations.Component;
/**
* Servlet that writes some sample content into the response.
*/
@Component(service = { Servlet.class }, property = { SLING_SERVLET_PATHS + "=/bin/upload",
SLING_SERVLET_METHODS + "= GET" })
public class SimpleServlet extends SlingSafeMethodsServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(final SlingHttpServletRequest req, final SlingHttpServletResponse resp)
throws ServletException, IOException {
final String resource = req.getParameter("path");
resp.setContentType("text/plain");
resp.getWriter().write("File path = " + resource);
}
}
Thank you for your reply!
I've tried your code but it returns the same error. Also all my servlets are in satisfied state and i have no idea how to turn them into active state.
Why does my new AEM servlet stay in satisfied stat... - Adobe Experience League Community - 453517
I've seen this post but I'am not using service in the servlet,also no unresolved dependency.
I'm wondering maybe something wrong with my pom file,so can you share your pom file,thank you in advance!
Hi @zonghuiliu
Please have a look on the similar community discussion for further information on external dependency resolution (import, export package). Hope this helps for better understanding.
Solved: AEM Import and Export Bundle - Adobe Experience League Community - 364872
Views
Likes
Replies
Views
Like
Replies
Views
Likes
Replies