小编vto*_*tor的帖子

无法反序列化Spring Session Scoped bean

我有以下会话作用域bean:

@ManagedBean
@Component
@Scope(proxyMode= ScopedProxyMode.TARGET_CLASS, value="session")
public class SessionData implements Serializable {}
Run Code Online (Sandbox Code Playgroud)

我将tomcat会话存储在数据库中.问题是,当应用程序尝试反序列化存储的会话时,我收到以下错误:

 org.apache.catalina.session.PersistentManagerBase.swapIn Error deserializing Session EE913D2ACAD49EB55EDA657A54DFA2CB: {1}
 java.lang.ClassNotFoundException: de.myproject.SessionData$$EnhancerBySpringCGLIB$$768b59b9
Run Code Online (Sandbox Code Playgroud)

它似乎实际上序列化了整个Spring上下文,显然de.myproject.SessionData$$EnhancerBySpringCGLIB$$768b59b9在服务器重启后没有这样的类,所以我收到了上述异常.

有没有办法避免这种情况,以便会话范围的bean正确序列化?

更新:有一个问题关于这个标记为没有评论的解决,但我仍然面对它.

java session spring spring-mvc

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

Spring Data - 为什么不能使用本机查询进行分页

假设我们有一个名为的实体MyEntity.可以使用@Query和使用命名查询来查询可分页结果,例如

 @Query(value = "select e from MyEntity e where e.enabled = true")
 Page<MyEntity> findAllEnabled(Pageable pageable);
Run Code Online (Sandbox Code Playgroud)

但是,使用本机查询不可能实现相同的功能,所以这一点

 @Query(value = "select * from my_entity where enabled = true", nativeQuery = true)
 Page<MyEntity> findAllEnabled(Pageable pageable);
Run Code Online (Sandbox Code Playgroud)

不行.

这背后的原因是什么?是否可以使Pageable使用本机查询?

java spring spring-data-jpa

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

Kotlin的Styleguide设置

我已经开始大量使用Koltin并且在代码格式化方面苦苦挣扎.

虽然有一个官方的编码约定指南,但我想知道是否有任何可以获取/导入和使用的IntelliJ的公共可用样式指南设置(例如google codestyle for Java)?

intellij-idea kotlin

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

AWS Application Load Balancer将所有标头转换为小写

我有一个在两个EC2实例中运行的REST API应用程序,并且长时间使用AWS Classic Load Balancer.REST API的客户端依赖于响应头(例如Location).

我知道HTTP标头根据定义不区分大小写,但是(不幸的是)一些客户端忽略了这一点,并以区分大小写的方式检查标头(例如,他们希望Location以大写字母开头).

最近我改为AWS Application Load Balancer,现在我发现它将所有响应头转换为小写,因此客户端无法正确处理响应.

我在这里有几个问题.

  1. 它是Application Load Balancer的预期行为吗?
  2. 有没有办法将它配置为返回标题,因为它们是由应用程序构建的?

amazon-ec2 amazon-web-services http-headers amazon-elb

11
推荐指数
2
解决办法
4445
查看次数

Spring控制器获取请求/响应

我如何获得可以设置的请求/响应?此外,在此方法的最后,我如何才能重定向到另一个页面?

@RequestMapping(value = "/dosomething", method = RequestMethod.GET)
public RETURNREDIRECTOBJ dosomething() throws IOException {
    ....
    return returnredirectpagejsp;
}
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc

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

连接已被放弃 - >发送到后端时发生I/O错误

我知道有很多关于废弃连接的主题,但是我无法弄清楚我的问题是什么,所以我真的希望得到一些帮助.

我有一个带有Spring的Java应用程序,它从外部服务中获取一些数据,并尝试将其保存在数据库中.

我有JDBC池的以下配置

<bean id="dataSource"
          class="org.apache.tomcat.jdbc.pool.DataSource"
          p:initialSize="2"
          p:minIdle="10"
          p:maxIdle="50"
          p:maxActive="100"
          p:maxWait="15000"
          p:jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer;org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"
          p:removeAbandoned="true"
          p:removeAbandonedTimeout="60"
          p:logAbandoned="true"
          p:testOnBorrow="true"
          p:testOnReturn="true"
          p:testWhileIdle="true"
          p:useEquals="false"
          p:fairQueue="false"
          p:timeBetweenEvictionRunsMillis="300000"
          p:minEvictableIdleTimeMillis="300000"
          p:validationInterval="10000"
          p:validationQuery="SELECT 1">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.user}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
Run Code Online (Sandbox Code Playgroud)

这是一个典型的Spring env,在我的服务中我有一个以下的方法

@Autowired
private TransactionalWrapper wrapper;

@Override
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void reconcileAllEvents(Date from, Date to) {
   for (Event event : eventService.reconcile(from, to)) {   
            transactionalWrapper.reconcile(event);   
   }    
}
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的 TransactionalWrapper

@Service
public class TransactionalWrapperImpl implements TransactionalWrapper {

        @Autowired
        private EventRepository eventRepository;

        @Transactional(propagation = …
Run Code Online (Sandbox Code Playgroud)

java postgresql spring hibernate jdbc

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

Kotlin:将运算符作为函数参数传递

我在Kotlin中有以下功能

fun evaluate(first:Int?, second:Int?) {
    var result = 0
    if (v.equals('*')) {
        result = (first ?: 0) * (second ?: 0)
    } else if (v.equals('+')) {
        result = (first ?: 0) + (second ?: 0)
    } else if (v.equals('-')) {
        result = (first ?: 0) - (second ?: 0)
    } else if (v.equals('/')) {
        result = (first ?: 0) / (second ?: 0)
    }
    return result   
}
Run Code Online (Sandbox Code Playgroud)

我想以某种方式更改它,以便我可以作为第三个参数传递所需的运算符并评估表达式.就像是

fun evaluate(first:Int?, second:Int?, op: () -> Unit):Int {
    return (first ?: 0).op(second …
Run Code Online (Sandbox Code Playgroud)

kotlin

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

在没有web.xml的情况下标记应用程序可分发用于Tomcat会话复制

我有基于Spring的应用程序,并使用编程方法(AbstractAnnotationConfigDispatcherServletInitializer)进行应用程序配置.

为了使tomcat会话复制工作,我需要使用tag 标记'app distributable,但是正如我所提到的,我正在使用编程风格,例如<distributable/>web.xml

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {

            String activeProfile = activeProfile();

            if (isNotEmpty(activeProfile)) {
                servletContext.setInitParameter("spring.profiles.active", activeProfile);
            }

            super.onStartup(servletContext);

        }
    }
Run Code Online (Sandbox Code Playgroud)

我找不到任何关于如何使用Spring配置的文档,所以我的问题是,是否可以在没有web.xml的情况下拥有可分发的应用程序?我无法将所有配置移动到web.xml,所以任何帮助都表示赞赏.

java xml session spring tomcat

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

将字符串转换为日期 - 罗马月份

我有以下字符串:"05 X 02".我怎么能把它转换成日期?我不想将其转换为字符串"05 10 02"然后到目前为止.可能吗?

感谢帮助.

到目前为止,我正在尝试使用

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd M/L yy");
Run Code Online (Sandbox Code Playgroud)

但它不起作用.也尝试使用DateTimeFormatterBuilder,但在这里我完全迷失了.

java datetime-format java-8

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

定义谓词和函数的正确方法

在定义谓词函数时,我曾经将它们创建为static final

private static final Predicate<SomeDto> SOME_PREDICATE =
                new Predicate<SomeDto>() {
                    @Override
                    public boolean apply(SomeDto input) {
                        return input.isValid();
                    }
                }
Run Code Online (Sandbox Code Playgroud)

但是我注意到,enum例如,版本也有很多用途

private enum SomePredicate implements Predicate<SomeDto> {
        INSTANCE;

        @Override
        public boolean apply(SomeDto input) {
            return input.isValid();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我知道枚举与静态最终主题,但是使用枚举对谓词或函数的静态最终是否有任何真正的优势?

java enums predicate guava

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

ReadWriteLock vs StampedLock

我一直在使用ReadWriteLock来实现/维护锁定习语.

自JDK8 StampedLock推出以来.由于RWLocks以其缓慢和糟糕的性能而闻名,因此StampedLock看起来像是另一种选择(它们不是可重入的,速度更快).

然而,除了性能之外,我认为StampedLock的维护和使用更加困难和复杂 - 例如线程现在可以自行解锁 - 因此应采取相应的措施.

StampedLock比RWLock有什么好处?

java multithreading java.util.concurrent java-8

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