标签: interceptor

EJB3拦截器

我一直在研究如何在EJB3.0中将拦截器应用于会话bean等.这些也可以应用于servlet吗?

java ejb java-ee interceptor

1
推荐指数
1
解决办法
530
查看次数

休眠会话关闭

我只是按照一个简单的hibernate struts教程,通过hibernate成功地进行了db调用.但是,我没有看到代码在任何地方关闭hibernate连接.

sessionFactory.getCurrentSession();
Run Code Online (Sandbox Code Playgroud)

用于获取每个请求的会话.我应该在用户注销时关闭此会话吗?或者在每个请求之后是否由框架处理?

第二个相关问题是,在什么样的用例中我会使用hibernate会话拦截器?

还有第三个问题(对不起它刚刚出现在我的脑海里)用hibernate/struts2进行缓存的最佳选择是什么?

session caching hibernate struts2 interceptor

1
推荐指数
1
解决办法
4897
查看次数

Struts2使用Interceptor处理会话超时

我试图使用Interceptor处理我的struts2应用程序中的会话超时请求.以下是与此相关的文件:

web.xml中:

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
    <session-timeout>1</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)

struts.xml中:

<package name="default" extends="struts-default">
<interceptors>
    <interceptor name="sessionInterceptor"
        class="com.platform.web.security.SessionInterceptor" />
</interceptors>
<action name="doLogin"
    class="com.platform.web.action.LoginAction">
    <result name="input">/login/login.jsp</result>
    <result name="error">/login/login.jsp</result>
    <result type="chain">menuAction</result>
</action>

<action name="menuAction"
    class="com.platform.web.action.MenuAction">
    <interceptor-ref name="sessionInterceptor"/> //Interceptor included here
    <result name="SUCCESS">/jsp/main.jsp</result>
    <result name="ERROR">/login/login.jsp</result>
    <result name="input">/jsp/myFavourite.jsp</result>
</action>
Run Code Online (Sandbox Code Playgroud)

拦截器类:

public class SessionInterceptor extends AbstractInterceptor implements StrutsStatics {
/**
 * 
 */
private static final long serialVersionUID = 1L;

@Override
public String intercept(ActionInvocation invocation) throws Exception {

final ActionContext context = invocation.getInvocationContext();
HttpServletRequest request = (HttpServletRequest) …
Run Code Online (Sandbox Code Playgroud)

session struts2 httprequest session-timeout interceptor

1
推荐指数
1
解决办法
2万
查看次数

CXF WSS4J拦截器

我正在尝试使用以下代码配置WSS4J拦截器:

        try {

        Map<String, Object> outProps = new HashMap<String, Object>();

        outProps.put(WSHandlerConstants.ACTION,
                WSHandlerConstants.TIMESTAMP + " "
                        + WSHandlerConstants.SIGNATURE + " "
                        + WSHandlerConstants.ENCRYPT);
        outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
        outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS,
                ClientKeystorePasswordCallback.class.getName());
        outProps.put(WSHandlerConstants.SIG_PROP_FILE,
                "clientWSsec-PC165.properties");
        outProps.put(WSHandlerConstants.ENC_PROP_FILE,
                "clientWSsec-PC165-Srv.properties");
        outProps.put(WSHandlerConstants.SIGNATURE_USER, "clientKey");
        outProps.put(WSHandlerConstants.ENCRYPTION_USER, "serverKey");

        Map<String, Object> inProps = new HashMap<String, Object>();

        inProps.put("action", "Timestamp Signature Encrypt");
        inProps.put("passwordType", "PasswordText");
        inProps.put("passwordCallbackClass",
                "utils.ClientKeystorePasswordCallback");
        inProps.put("signatureUser", "clientKey");
        inProps.put("encryptionUser", "serverKey");
        inProps.put("encryptionPropFile", "clientWSsec-PC165.properties");
        inProps.put("signaturePropFile", "clientWSsec-PC165.properties");


        DefaultCryptoCoverageChecker coverageChecker = new DefaultCryptoCoverageChecker();
        coverageChecker.setSignBody(true);
        coverageChecker.setSignTimestamp(true);
        coverageChecker.setEncryptBody(true);

        Service service = new Service ();
        WsService  wsService = service.getWsServiceSOAP();

        org.apache.cxf.endpoint.Client client = ClientProxy
                .getClient(wsService); …
Run Code Online (Sandbox Code Playgroud)

ws-security cxf interceptor wss4j

1
推荐指数
1
解决办法
3594
查看次数

AngularJS.添加全局AJAX错误处理程序(如果尚未定义)

我怎么能设置全局AJAX处理程序,只有当我还没有为特定的AJAX调用定义错误处理程序时才会调用它?

如果发生错误,我的一些ajax调用确实需要做一些逻辑(例如重新启用按钮),但对于某些AJAX,我只需要在发生错误时显示错误消息.

例如,这段代码没有为AJAX调用定义任何错误处理程序,所以我想申请这个调用全局错误处理程序,我将只显示错误消息:

user.$delete().then(function () {
    // on success
});
Run Code Online (Sandbox Code Playgroud)

但是这个AJAX调用已经定义了错误处理程序,我不想对它应用全局处理程序:

    $scope.deleteButtonEnabled = false;
    user.$delete().then(function () {
        // on success
    }, function(err) {   
        // Do some stuff and then show error message     
        $scope.deleteButtonEnabled = true;        
        alert('Error' + JSON.stringify(err))
    });
Run Code Online (Sandbox Code Playgroud)

javascript ajax interceptor angularjs

1
推荐指数
1
解决办法
1782
查看次数

如何使用spring mvc拦截器更改发布的值

有谁知道如何使用spring mvc拦截器更改发布值?我看过一些例子但没有关于这个问题.我知道如何获得它们,但我不知道如何修改它们.

@Component
public class CultureInterceptor implements HandlerInterceptor {

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {

    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {

    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
        // we get the posted values
        String culture = request.getParameter("culture");
        String a = request.getParameter("a");
        String b = request.getParameter("b");
        System.out.println(String.format("[CultureInterceptor culture=%s, a=%s, b=%s]", culture, a, b));
        if (culture != null …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc interceptor

1
推荐指数
1
解决办法
5016
查看次数

如何获取previouseState而不使用hibernate拦截器从db中获取创建审计跟踪表?

我正在尝试创建一个审计表,结束看起来像这样:

实体ID,财产的属性oldValue,NEWVALUE,用户,时间戳

使用hibernate EmptyInterceptor 我希望这个表有很多IO.似乎onFlushDirty方法的previouseState没有像我预期的那样工作.

我怎么能不得到如图所示从数据库中获取它的旧值在这里

我试图关注这篇文章

public class AuditLogInterceptor extends EmptyInterceptor {
    private Set inserts    = new HashSet();
    private Set updates    = new HashSet();
    private Set deletes    = new HashSet();
    private Map oldies     = new HashMap();

    @Override
    public boolean onSave(Object entity,
                          Serializable id,
                          Object[] state,
                          String[] propertyNames,
                          Type[] types)
            throws CallbackException {
        if (entity instanceof Auditable)
            inserts.add((Auditable)entity);
        return false;
    }

    @Override
    public void onDelete(Object entity, Serializable id, Object[] state,
            String[] propertyNames, Type[] types) {
        if (entity …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa interceptor

1
推荐指数
1
解决办法
808
查看次数

Angular http拦截器响应头

我制作了一个http拦截器,我需要在其中评估responese头并找到特定的(授权).拦截器本身正在工作但它无法列出我在服务器端设置的标头,我可以清楚地看到设置在firebug的网络选项卡中.

拦截器:

app.factory('HttpItc', function($q, $localStorage, $injector) {
return {
response: function (response) {
   //console.log(response); // Contains the data from the response.

  var freshJwt = response.headers['Authorization'];

  if (freshJwt) {
    $localStorage.jwt = freshJwt;
  }

  // Return the response or promise.
  return response;
}  };});
Run Code Online (Sandbox Code Playgroud)

萤火虫中的标题:

评估回复:

这是我在服务器端Express中设置标头的方法:

return res
                    .header('Authorization', jwt)
                    .header('testHeader', 'testValue')
                    .json(user);
Run Code Online (Sandbox Code Playgroud)

怎么了?如何在http的拦截器中访问响应头?

header http interceptor express angularjs

1
推荐指数
1
解决办法
5866
查看次数

如何将 spring repo 注入休眠拦截器

我们正在构建一个应用程序,我们需要将实体更新记录到历史记录表中。我正在尝试通过休眠拦截器来实现这一点,我们可以设法获取所有更改,但在将它们插入审计表时遇到困难。

我的 JPA 配置

public class JPAConfiguration {
 ----
 @Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() throws SQLException {
    LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
    factoryBean.setDataSource(dataSource());
    factoryBean.setPackagesToScan(new String[] {"com.yyy.persist"});

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setShowSql(true);
    // thsi is required in order to enable Query DSL
    vendorAdapter.setDatabasePlatform("org.hibernate.dialect.Oracle10gDialect");
    factoryBean.setJpaVendorAdapter(vendorAdapter);
   // factoryBean.setMappingResources(mappingResources);
    // adding hibernate interceptor

    Properties jpaProperties = new Properties();
    jpaProperties.setProperty("hibernate.ejb.interceptor", "com.yyy.admin.service.AuditInterceptor");
    factoryBean.setJpaProperties(jpaProperties);
    return factoryBean;
}
Run Code Online (Sandbox Code Playgroud)

我的拦截器

public class AuditInterceptor extends EmptyInterceptor {
public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState,
        String[] …
Run Code Online (Sandbox Code Playgroud)

spring hibernate interceptor

1
推荐指数
1
解决办法
2216
查看次数

如何在 NEST Js 中使用全局拦截器中的服务

我想在全局拦截器中使用服务。

我的代码如下所示:

import { VariablesService } from '../app/modules/variables/variables.service';

@Interceptor()
export class globalInterceptor implements NestInterceptor {
  constructor(private service: VariablesService) {
    console.log('contructor running', service);  //getting null here
  }
Run Code Online (Sandbox Code Playgroud)

server.ts 上,我首先是这样初始化的:

app.useGlobalInterceptors(new globalInterceptor())
Run Code Online (Sandbox Code Playgroud)

但是在注入服务后我必须做一些修改,因为现在需要参数 globalInterceptor()

const variableService = await app.get<VariablesService>(VariablesService);
  app.useGlobalInterceptors(new globalInterceptor(variableService));
Run Code Online (Sandbox Code Playgroud)

现在有什么问题是我得到servicenull,我无法创建服务的对象。

GitHub 问题链接

javascript interceptor typescript nestjs

1
推荐指数
1
解决办法
3956
查看次数