当AEM Servlet未被执行时,可能是由于以下原因:
发布代理配置错误:确保在AEM中的代理配置中正确地映射了Servlet的路径。例如,确保在/etc/httpd/conf.d/目录下的AEM代理配置文件中,将请求路径正确地映射到Servlet。
Servlet路径错误:检查Servlet的路径是否正确。在AEM中,Servlet的路径通常是以/content/开头的。确保在代码中使用的路径与实际路径匹配。
以下是一个简单的示例代码,用于创建和注册一个Servlet,并确保它被正确执行:
package com.example.servlets;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.osgi.framework.Constants;
import javax.servlet.ServletException;
import java.io.IOException;
@Component(immediate = true, metatype = true)
@Service
@Properties({
@Property(name = Constants.SERVICE_DESCRIPTION, value = "Example Servlet"),
@Property(name = Constants.SERVICE_VENDOR, value = "Example Company"),
@Property(name = "sling.servlet.paths", value = "/bin/example/servlet")
})
public class ExampleServlet extends SlingSafeMethodsServlet {
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
// Servlet logic goes here
response.getWriter().write("Example Servlet Executed");
}
}
在上述示例中,我们创建了一个名为ExampleServlet的Servlet,并将其路径设置为/bin/example/servlet。确保在AEM中进行正确的部署和注册,并在浏览器中访问该路径(例如http://localhost:4502/bin/example/servlet),以验证Servlet是否被正确执行。
请注意,以上示例代码是使用Apache Sling和Apache Felix的注解进行开发的。确保在AEM项目中正确配置这些依赖项,并在构建和部署过程中包含所需的依赖项。