我只是按照一个简单的hibernate struts教程,通过hibernate成功地进行了db调用.但是,我没有看到代码在任何地方关闭hibernate连接.
sessionFactory.getCurrentSession();
Run Code Online (Sandbox Code Playgroud)
用于获取每个请求的会话.我应该在用户注销时关闭此会话吗?或者在每个请求之后是否由框架处理?
第二个相关问题是,在什么样的用例中我会使用hibernate会话拦截器?
还有第三个问题(对不起它刚刚出现在我的脑海里)用hibernate/struts2进行缓存的最佳选择是什么?
我试图使用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) 我正在尝试使用以下代码配置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) 我怎么能设置全局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) 有谁知道如何使用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) 我正在尝试创建一个审计表,结束看起来像这样:
实体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) 我制作了一个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的拦截器中访问响应头?
我们正在构建一个应用程序,我们需要将实体更新记录到历史记录表中。我正在尝试通过休眠拦截器来实现这一点,我们可以设法获取所有更改,但在将它们插入审计表时遇到困难。
我的 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) 我想在全局拦截器中使用服务。
我的代码如下所示:
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)
现在有什么问题是我得到service
的null
,我无法创建服务的对象。
interceptor ×10
hibernate ×3
spring ×3
angularjs ×2
java ×2
javascript ×2
session ×2
struts2 ×2
ajax ×1
caching ×1
cxf ×1
ejb ×1
express ×1
header ×1
http ×1
httprequest ×1
java-ee ×1
jpa ×1
nestjs ×1
spring-mvc ×1
typescript ×1
ws-security ×1
wss4j ×1