Overview
CKFinder is an Ajax application with a frontend written entirely in JavaScript. It communicates with the server through JSON messages. On the server side, there is a “connector” written in a specific server language, which handles the frontend requests. The following diagram illustrates it:

# Connector architecture
The CKFinder 3 for Java connector is a regular servlet built on top of the Spring features:
spring-context– Used for dependency injection, events and resource management.spring-web– Used for web-related tasks.
# Path scan
CKFinder’s servlet initializes its own internal application context and performs a path scan of the com.cksource.ckfinder package to discover and register all the components. If you need to add a custom path to be scanned for components, you can use the scan-path servlet initialization parameter.
To register your custom components (e.g. Authenticator), you need to either place the code in the com.cksource.ckfinder package, or in the package you registered for path scan using the scan-path servlet initialization parameter.
Servlet initialization parameters can be set in many ways. Below, you can see an example of setting the scan-path parameter using the Standard Deployment Descriptor (web.xml file). Thanks to this, CKFinder’s Authenticator or any other custom code can be placed in a package of your choice. In the example presented below it is in the package named com.example.ckfinder.
<!-- web.xml -->
<servlet>
<init-param>
<param-name>scan-path</param-name>
<param-value>com.example.ckfinder</param-value>
</init-param>
<servlet-name>CKFinder</servlet-name>
<servlet-class>com.cksource.ckfinder.servlet.CKFinderServlet</servlet-class>
<multipart-config>
<location>/tmp</location>
<max-file-size>5242880</max-file-size><!--5MB-->
<max-request-size>20971520</max-request-size><!--20MB-->
<file-size-threshold>0</file-size-threshold>
</multipart-config>
</servlet>