<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Developing a custom webapp with Alfresco embedded in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/developing-a-custom-webapp-with-alfresco-embedded/m-p/104249#M72799</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I am writing a proof-of-concept web application that embeds Alfresco and uses its repository services API.&amp;nbsp; Currently, I'm trying to flush out a few details.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1. I have a simple servlet that grabs the application context and authenticates in the init() method, which will start up the embedded Alfresco instance (modeled after the FirstFoundationClient in the SDK):&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();&lt;BR /&gt;serviceRegistry = (ServiceRegistry) ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);&lt;BR /&gt;AuthenticationService authenticationService = serviceRegistry.getAuthenticationService();&lt;BR /&gt;authenticationService.authenticate(username, password.toCharArray());&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I visit the servlet in the browser, I sporadically get the following stack trace, which is usually alleviated if I just refresh the page:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;09:37:41,994 ERROR [[/AlfrescoAPIServlets-0.1].[EmbeddedAlfrescoServlet]] Servlet.service() for servlet EmbeddedAlfrescoServlet threw exception&lt;BR /&gt;net.sf.acegisecurity.AuthenticationCredentialsNotFoundException: A valid SecureContext was not provided in the RequestContext&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at net.sf.acegisecurity.intercept.AbstractSecurityInterceptor.credentialsNotFound(AbstractSecurityInterceptor.java:477)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at net.sf.acegisecurity.intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:355)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:77)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.alfresco.repo.audit.AuditComponentImpl.auditImpl(AuditComponentImpl.java:228)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.alfresco.repo.audit.AuditComponentImpl.audit(AuditComponentImpl.java:166)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:69)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at $Proxy14.selectNodes(Unknown Source)&lt;BR /&gt;…&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt;Does anybody have clues as to what the problem could be?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2. The web client uses a different startup method, configured as context listeners defined in web.xml.&amp;nbsp; This has the effect of starting up the alfresco server when the app server starts up and deploys the application, rather than when the first time the servlet is run.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;listener&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;listener-class&amp;gt;org.apache.myfaces.webapp.StartupServletContextListener&amp;lt;/listener-class&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/listener&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;listener&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;listener-class&amp;gt;org.springframework.web.context.ContextLoaderListener&amp;lt;/listener-class&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/listener&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;listener&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;listener-class&amp;gt;org.alfresco.web.app.ContextListener&amp;lt;/listener-class&amp;gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/listener&amp;gt;&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;So how do I grab the application context in my servlet once I've started up the embedded Alfresco instance?&amp;nbsp; If I use the code in #1, it attempts to start the alfresco server all over again.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;3. I would like to be able to quickly answer my own questions like the ones above by looking at the Alfresco codebase.&amp;nbsp; Javadocs are helpful when writing client code, but they don't really explain the package hierarchy.&amp;nbsp; Is anyone aware of documentation that describes this?&amp;nbsp; For example, I'd like to know where to look to find out how web service calls translate to repository api calls on the server side. There's only so much I can infer from looking at package names.&amp;nbsp; &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://connect.hyland.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 26 Jul 2007 18:05:16 GMT</pubDate>
    <dc:creator>pitt1</dc:creator>
    <dc:date>2007-07-26T18:05:16Z</dc:date>
    <item>
      <title>Developing a custom webapp with Alfresco embedded</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/developing-a-custom-webapp-with-alfresco-embedded/m-p/104249#M72799</link>
      <description>I am writing a proof-of-concept web application that embeds Alfresco and uses its repository services API.&amp;nbsp; Currently, I'm trying to flush out a few details.1. I have a simple servlet that grabs the application context and authenticates in the init() method, which will start up the embedded Alfresco</description>
      <pubDate>Thu, 26 Jul 2007 18:05:16 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/developing-a-custom-webapp-with-alfresco-embedded/m-p/104249#M72799</guid>
      <dc:creator>pitt1</dc:creator>
      <dc:date>2007-07-26T18:05:16Z</dc:date>
    </item>
    <item>
      <title>Re: Developing a custom webapp with Alfresco embedded</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/developing-a-custom-webapp-with-alfresco-embedded/m-p/104250#M72800</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Regarding #2, if the application context is already loaded via a Spring WebApplicationContext (which is how the web client does things), you can use the following code to obtain a reference to it (and from there a reference to the service registry):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ApplicationContext ctx = (ApplicationContext)request.getSession().getServletContext().getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServiceRegistry&amp;nbsp;&amp;nbsp;&amp;nbsp; reg = (ServiceRegistry)ctx.getBean("ServiceRegistry");&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;A minor simplification is to implement the ServletContextAware interface in your servlets and/or filters, and then follow the same steps above.&amp;nbsp; I've not tried this myself yet.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Jul 2007 23:05:48 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/developing-a-custom-webapp-with-alfresco-embedded/m-p/104250#M72800</guid>
      <dc:creator>pmonks</dc:creator>
      <dc:date>2007-07-30T23:05:48Z</dc:date>
    </item>
    <item>
      <title>Re: Developing a custom webapp with Alfresco embedded</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/developing-a-custom-webapp-with-alfresco-embedded/m-p/104251#M72801</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks for the tip!&amp;nbsp; I have found that the web client does this slightly differently, using a spring method to grab the web application context:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;WebApplicationContext wc = WebApplicationContextUtils.getRequiredWebApplicationContext(context);&lt;BR /&gt;ServiceRegistry serviceRegistry = (ServiceRegistry) wc.getBean(ServiceRegistry.SERVICE_REGISTRY);&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Jul 2007 00:13:48 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/developing-a-custom-webapp-with-alfresco-embedded/m-p/104251#M72801</guid>
      <dc:creator>pitt1</dc:creator>
      <dc:date>2007-07-31T00:13:48Z</dc:date>
    </item>
    <item>
      <title>Re: Developing a custom webapp with Alfresco embedded</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/developing-a-custom-webapp-with-alfresco-embedded/m-p/104252#M72802</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Nice!&amp;nbsp; I didn't know that that Spring API existed!&amp;nbsp; &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Jul 2007 00:51:13 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/developing-a-custom-webapp-with-alfresco-embedded/m-p/104252#M72802</guid>
      <dc:creator>pmonks</dc:creator>
      <dc:date>2007-07-31T00:51:13Z</dc:date>
    </item>
  </channel>
</rss>

