我正在使用AdobeAEM 6.0,对ApacheFelix和Sling还是一个新手,我想知道如何从带有@service注释的OSGI服务获取SlingHttpServletRequest实例。
是否可以从ResourceResolverFactory或SlingRepository获取请求?
@Service
@Component(metatype = false)
public class TestServiceImpl implements TestService{
@Reference
private ResourceResolverFactory resourceResolverFactory;
@Reference
private SlingRepository repository;
}
我知道SlingHttpServletRequest可用于扩展SlingAllMethodsServlet的类,但就我的需求而言,我需要编写服务而不是servlet。
为什么我需要SlingHttpServletRequest背后的理由是因为我需要获取客户端的IP地址用于审计日志记录目的。
有没有更好的办法?或者至少有人可以帮我指出正确的方向,我如何才能达到这样的要求。
我认为过滤器是你需要的。创建一个实现Filter
的服务。每个Sling请求都要调用doFilter
方法(当然sling.filter.scope=REQUEST)
package com.examples.test.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component(
metatype = true,
label = "Test Filter",
immediate = true,
enabled = true
)
@Service
@Properties({
@Property(name = "sling.filter.scope", value = "REQUEST", propertyPrivate = true),
@Property(name = "service.ranking", intValue = 100, propertyPrivate = true)
})
public class TestFilter implements Filter {
private final Logger log = LoggerFactory.getLogger(getClass());
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
//If you'll need some SlingHttpServletRequest functionality
//SlingHttpServletRequest httpRequest = (SlingHttpServletRequest) request;
log.info(request.getRemoteAddr());
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
}
}
问题内容: 我是Angular的新手(也是Java语言)。我已经编写了一个Angular服务,该服务返回一个用户数组。从HTTP调用检索数据,该HTTP调用以JSON格式返回数据。记录从HTTP调用返回的JSON数据时,可以看到此调用成功,并且返回了正确的数据。我有一个调用服务以获取用户的组件和一个显示用户的HTML页面。我无法从服务到组件获取数据。我怀疑我使用的Observable错误。也许我也
我有一个运行Equinox框架的类。现在我想获取一个对象(在其中一个bundle中定义),该对象由框架外的服务返回。 不幸的是,我得到了一个LinkageError,不知道如何摆脱它。甚至可以让服务向非捆绑代码返回适当的对象吗? 以下是完整的故事: ParserDTOBundle是一个包,它定义了类ParserDTO并导出了相应的包。 在另一个包ParserServiceBundle中,我定义了一
问题内容: 我有以下方法: 在这里,我将ResponseFormat属性设置为json,但仍将其作为XML返回。 我想使用此asmx服务进行json格式化有什么想法吗? 问题答案: 我遇到了同样的问题,并包含以下代码以使其正常工作。 更新: 要获得纯json格式,您可以使用如下的javascript序列化程序。 但是,这适用于复杂类型,但字符串没有任何区别。
TDR:我需要在自己的后端拥有Google Cloud Functions。 我编写应用程序,它使用firebase(尤其是firestore)作为在nodejs上编写的我自己的后端和客户端应用程序之间的传输层。 有时,我需要从后端的客户端捕获一些事件,但我希望避免直接向后端执行http查询(因为我需要捕获脱机状态和其他问题)。最好在firestore文档中进行一些更改,在后端捕获这些更改并执行一
我正在尝试访问我在ftps服务器中创建的路径中的一个文件夹,但它没有返回任何东西,它正在连接但没有返回任何东西,如果我将服务器配置更改为ftp,它可以工作。我使用的是FileZilla服务器,其配置如上所示。 SSL/TLS 服务器关于连接的日志收到一条消息,我不知道它是否有用: 227进入被动模式 列表 NLST 需要521个PROT P 退出 知道怎么了吗? 谢谢大家!
我是Javascript新手,我正试图从包含多个对象的数组中获取id键的值。 通过 for..在循环中,我需要对象的id - 如1,2或3 - 与不同的值进行比较。 我试着这样做: 但是,我这样做了,删除Id值返回未定义。 我想不通为什么返回未定义,我无法解决这个问题。 我希望我能很好地表达自己,对不起我的英语不好。