我有一个奇怪的错误,几个小时的调试,我无法理解.
更新1:我使用在Tomcat 7上运行的Spring Security 4.0.3.
问题接近这个问题,也许SecurityContextHolder是在这期间失去了response.redirect()但答案没有帮助.
问题似乎也接近这个问题,但答案对我来说没有意义.
这是我的配置:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class ProjectSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests().antMatchers("/login").anonymous();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser(Constants.PROFIL_ADMIN).password(Constants.PROFIL_ADMIN).
roles("ADMIN","TEST_SERVICE");
}
}
Run Code Online (Sandbox Code Playgroud)
登录后,我尝试获取安全的URL:
@RequestMapping(value = "/myurl", method = RequestMethod.GET)
@ResponseBody
public boolean getTestService(HttpServletRequest request)
throws SQLException, PoRulesException {
System.out.println("get security context");
System.out.println("--------------------");
SecurityContext secuContext = (SecurityContext) request.getSession().getAttribute("SPRING_SECURITY_CONTEXT");
System.out.println(secuContext);
System.out.println("get security context …Run Code Online (Sandbox Code Playgroud) 我通常在linux上使用git,而我对Windows(c#项目)上的sourceTree并不熟悉,该界面对于跟随树很有用,但是我想使用commande行。
我真的不明白,我用sourceTree代理生成了ssh密钥,并用“ Pageant”加载了,我在我的bitbucket帐户上添加了公共密钥。
而且有效。我可以从sourceTree界面克隆/拉/推

但是使用sourceTree命令行模式不起作用

我的服务“duplicateContract”上有休眠回滚异常
Caused by: org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1031)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy128.duplicateContracts(Unknown Source)
at com.test.server.rpc.SrvContractImpl.duplicateContracts(SrvContractImpl.java:699)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561)
... 34 more
Caused by: javax.transaction.RollbackException
at org.objectweb.jotm.TransactionImpl.commit(TransactionImpl.java:329)
at org.objectweb.jotm.Current.commit(Current.java:485)
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1028)
... 47 more
Run Code Online (Sandbox Code Playgroud)
问题是,我只是无法调试,某个地方的持久对象存在错误,但我不知道(这不是超时或缺少 @Transactional )。如何获得此异常的更多详细信息?(也许在 oracle 日志中的某个地方?但在哪里?)。
我们使用 Keycloak 作为 SSO 提供商来登录我们所有的应用程序。
我们使用 keycloak 注销端点在领域级别注销并使用户的访问令牌无效。
我们的问题是,如果用户已连接websiteA并websiteB从 注销,他仍然可以通过浏览器websiteA进行活动的本地会话。websiteB
基本上我们希望用户注销websiteB,有点像如果您从 google 驱动器注销,那么一旦您打开 gmail.com,您也会从 gmail 注销
希望对我们来说,keycloak 支持OIDC 反向通道注销
因此,我们定义当用户从 keycloak 注销时,LogoutToken 会发送到我们选择的端点上的每个应用程序
比方说websiteB/backchannel-logout
因此,在我的 JEE 应用程序中,服务器会在 url 上收到 LogoutToken/backchannel-logout
这是注销令牌的样子,仅供参考
{
"iat": 1654177246,
"jti": "66265511-a5fc-4f60-b5b7-65bea0e1a9e2",
"iss": "https://mykeycloakserver.com/auth/realms/myRealm",
"aud": "websiteB",
"sub": "18e56c69-a90d-4f32-b76a-c9166def54d0",
"typ": "Logout",
"sid": "5bca2f13-f7a6-4b41-bdfc-1f7a89264149",
"events": {
"http://schemas.openid.net/event/backchannel-logout": {},
"revoke_offline_access": true
}
}
Run Code Online (Sandbox Code Playgroud)
此时,我收到了来自 SSO 提供商 keycloak 的注销请求,其中包含sub用户的唯一 ID,这样我就可以知道我想要注销的用户。
但基本上我只是收到一个包含logout_token来自 keycloak 的HttpRequest
String …
有人已经看到这个错误?
我在创建HSSFWorkbook时就明白了
try {
LOGGER.info("Open Excel file: " + filename);
InputStream inputStream = new FileInputStream(filename);
Workbook wb = new HSSFWorkbook(inputStream);
Sheet sheet = wb.getSheetAt(0);
/* save excel */
FileOutputStream fileOut = new FileOutputStream(filenameOutput);
wb.write(fileOut);
fileOut.close();
wb.close();
inputStream.close();
} catch (IOException e1) {
LOGGER.log(Level.SEVERE, e1.getMessage(), e1);
}
Run Code Online (Sandbox Code Playgroud)
错误已开启 new HSSFWorkbook(inputstream)
Exception in thread "main" java.lang.RuntimeException: Unexpected missing row when some rows already present
at org.apache.poi.hssf.usermodel.HSSFSheet.setPropertiesFromSheet(HSSFSheet.java:212)
at org.apache.poi.hssf.usermodel.HSSFSheet.<init>(HSSFSheet.java:137)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:338)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:289)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:224)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:382)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:364)
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
我有这种工作的DB2请求
MERGE INTO table_to_upsert AS tab
USING (VALUES
(1, 2, 3),
(4, 5, 6),
(7, 8, 9)
-- more rows
) AS merge (C1, C2, C3)
ON tab.key_to_match = merge.key_to_match -- usually the primary key example : tab.C2 = merge.C2
WHEN MATCHED THEN
UPDATE SET tab.C1 = merge.C1,
tab.C2 = merge.C2,
tab.C3 = merge.C3
WHEN NOT MATCHED THEN
INSERT (C1, C2, C3)
VALUES (merge.C1, merge.C2, merge.C3)
Run Code Online (Sandbox Code Playgroud)
但是现在,我想要的是,如果主键已经存在,然后进行更新,但只有C1的新值与旧值不同时才更新C1。
理论上是这样的
MERGE INTO table_to_upsert AS tab
USING (VALUES
(1, 2, 3),
(4, 5, …Run Code Online (Sandbox Code Playgroud)