如何使用 spring 配置 Hazelcast 进行会话缓存,同时将其限制为一组节点?

2024-06-23

我需要使用 Spring 设置 Hazelcast 会话缓存。使用 hazelcast 文档中的配置很简单。然而,其不足。我需要为我的每个环境(DEV、QA、PROD)使用不同的配置文件。或者(理想情况下),我想使用 spring bean 中的几个属性,这些属性将在 spring 容器初始化期间设置。根据 hazelcast 文档,我需要做的就是为每个环境设置一个组。像这样:

<hazelcast>
    <group>
       <name>dev</name>
       <password>dev-pass</password>
   </group>
   ...
</hazelcast>

作为奖励,我希望缓存成为用于会话和应用程序级对象(地图、队列等)的单个缓存。

有人可以分享一个关于他们如何做到这一点的例子吗?感谢您的帮助。


感谢您的建议答案。不过,我想我已经使用以下配置解决了这个问题。如果有人对此配置提供任何反馈,我将不胜感激。

我的做法:

1)使用spring配置建立实例。 2) 使用具有 Web 过滤器配置的最低配置 hazelcast.xml 文件增强实例。请注意,多播和 tcp-ip 连接器是错误的。

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring/servlet-context.xml,
            /WEB-INF/spring/root-context.xml,
            ....
            /WEB-INF/spring/hazelcastContext.xml
        </param-value>
    </context-param>


<listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>
....

<filter>
    <filter-name>hazelcast-filter</filter-name>
    <filter-class>com.hazelcast.web.WebFilter</filter-class>
    <!--
        Name of the distributed map storing
        your web session objects
    -->
    <init-param>
        <param-name>map-name</param-name>
        <param-value>my-sessions</param-value>
    </init-param>
    <!--
        How is your load-balancer configured?
        stick-session means all requests of a session
        is routed to the node where the session is first created.
        This is excellent for performance.
        If sticky-session is set to false, when a session is updated
        on a node, entry for this session on all other nodes is invalidated.
        You have to know how your load-balancer is configured before
        setting this parameter. Default is true.
    -->
    <init-param>
        <param-name>sticky-session</param-name>
        <param-value>true</param-value>
    </init-param>
    <!--
        Name of session id cookie
    -->
    <init-param>
        <param-name>cookie-name</param-name>
        <param-value>hazelcast.sessionId</param-value>
    </init-param>
    <!--
        Domain of session id cookie. Default is based on incoming request.
    -->
    <init-param>
        <param-name>cookie-domain</param-name>
        <param-value>.mycompany.com</param-value>
    </init-param>
    <!--
        Should cookie only be sent using a secure protocol? Default is false.
    -->
    <init-param>
        <param-name>cookie-secure</param-name>
        <param-value>false</param-value>
    </init-param>
    <!--
        Should HttpOnly attribute be set on cookie ? Default is false.
    -->
    <init-param>
        <param-name>cookie-http-only</param-name>
        <param-value>false</param-value>
    </init-param>
    <!--
        Are you debugging? Default is false.
    -->
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
    <!--
        Configuration xml location;
            * as servlet resource OR
            * as classpath resource OR
            * as URL
        Default is one of hazelcast-default.xml
        or hazelcast.xml in classpath.
    -->

    <init-param>
        <param-name>config-location</param-name>
        <param-value>/WEB-INF/classes/hazelcast.xml</param-value>
    </init-param>

    <!--
        Do you want to use an existing HazelcastInstance?
        Default is null.
    -->`enter code here`
    <init-param>
        <param-name>instance-name</param-name>
        <param-value>myapp</param-value>
    </init-param>
    <!--
        Do you want to connect as a client to an existing cluster?
        Default is false.
    -->
    <init-param>
        <param-name>use-client</param-name>
        <param-value>false</param-value>
    </init-param>
    <!--
        Client configuration location;
            * as servlet resource OR
            * as classpath resource OR
            * as URL
        Default is null.
    -->
    <init-param>
        <param-name>client-config-location</param-name>
        <param-value>/WEB-INF/classes/hazelcast-client.properties</param-value>
    </init-param>
        <!--
            Do you want to shutdown HazelcastInstance during
            web application undeploy process?
            Default is true.
        -->
        <init-param>
            <param-name>shutdown-on-destroy</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>hazelcast-filter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>

...

</web-app>

hazelcast.xml(从 jar 文件内的 hazelcast.xml 复制)...

<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-2.4.xsd"
           xmlns="http://www.hazelcast.com/schema/config"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

...
<network>
    <port auto-increment="true">5701</port>
    <outbound-ports>
        <!--
        Allowed port range when connecting to other nodes.
        0 or * means use system provided port.
        -->
        <ports>0</ports>
    </outbound-ports>
    <join>
        <multicast enabled="false">
            <multicast-group>224.2.2.3</multicast-group>
            <multicast-port>54327</multicast-port>
        </multicast>
        <tcp-ip enabled="false">
            <interface>127.0.0.1</interface>
        </tcp-ip>
 ...
    </join>
 ...
</network>

...  

</hazelcast>

弹簧配置....

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hz="http://www.hazelcast.com/schema/spring"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.hazelcast.com/schema/spring
http://www.hazelcast.com/schema/spring/hazelcast-spring-2.4.xsd">


<bean id="hazelcast" class="com.hazelcast.core.Hazelcast" />

<!-- Hazelcast Instance configuration -->
<hz:hazelcast id="myapp">
    <hz:config>
        <!-- Hazelcast Instance Name -->
        <hz:instance-name>${hz.instance.name}</hz:instance-name>
        <!-- Hazelcast Group Name and Password -->
        <hz:group name="${hz.group.name}" password="${hz.group.password}" />
        <!-- Hazelcast Management Center URL -->
        <hz:management-center enabled="${hz.management.center.enabled}" url="${hz.management.center.url}" />
        <!-- Hazelcast Tcp based network configuration -->
        <hz:network port="${hz.network.port}" port-auto-increment="${hz.network.port.auto.increment}">
            <hz:join>
                <hz:multicast enabled="${hz.multicast.enabled}" multicast-group="224.2.2.3" multicast-port="54327" />
                <hz:tcp-ip enabled="${hz.tcp.ip.enabled}">
                    <hz:members>${hz.members}</hz:members>
                </hz:tcp-ip>
            </hz:join>
        </hz:network>
        <!-- Hazelcast Distributed Map configuration -->
        <hz:map name="map" backup-count="${hz.map.backup.count}" max-size="${hz.map.max.size}" eviction-percentage="${hz.map.eviction.percentage}"
            read-backup-data="${hz.map.read.backup.data}" eviction-policy="${hz.map.eviction.policy}" merge-policy="${hz.map.merge.policy}" />
    </hz:config>
</hz:hazelcast>

财产档案....

#-- Hazelcast properties.
hz.instance.name = myapp
hz.group.name = CERT
hz.group.password = cert
hz.management.center.enabled = true
hz.management.center.url = http://127.0.0.1:8080/mancenter
hz.network.port = 5701
hz.network.port.auto.increment = true
hz.multicast.enabled = true
hz.tcp.ip.enabled = false
hz.members = 127.0.0.1
hz.executor.service.core.pool.size = 2
hz.executor.service.max.pool.size = 30
hz.executor.service.keep.alive.seconds = 30
hz.map.backup.count=2
hz.map.max.size=0
hz.map.eviction.percentage=30
hz.map.read.backup.data=true
hz.map.cache.value=true
hz.map.eviction.policy=NONE
hz.map.merge.policy=hz.ADD_NEW_ENTRY

根上下文.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:hz="http://www.hazelcast.com/schema/spring"
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.1.xsd
    http://www.springframework.org/schema/jee 
    http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
    http://www.hazelcast.com/schema/spring
    http://www.hazelcast.com/schema/spring/hazelcast-spring-2.4.xsd">


...

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <jee:jndi-lookup jndi-name="java:comp/env/config_file" />
            </list>
        </property>
    </bean>

...

</beans>    

汤姆猫配置...

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
...

    <Context docBase="myapp" path="/myapp" reloadable="true"  source="org.eclipse.jst.j2ee.server:pwc-ws">
                    <Environment description="" name="config_file" override="false" type="java.lang.String" value="file:c:/path/to/config/myapp.properties" />
        </Context>
...

</Host>

Tomcat 输出(注意:这是一个两节点 hazelcast 组的重新启动场景。在此场景中,节点 1 重新启动。节点 2 的输出显示节点 1 从组中删除,然后返回到组中)。

CERT 组节点 1

Nov 19, 2013 4:27:56 PM com.hazelcast.impl.AddressPicker
INFO: Prefer IPv4 stack is true.
Nov 19, 2013 4:27:56 PM com.hazelcast.impl.AddressPicker
INFO: Picked Address[10.23.43.13]:5701, using socket ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=5701], bind any local is true
Nov 19, 2013 4:27:57 PM com.hazelcast.system
INFO: [10.23.43.13]:5701 [CERT] Hazelcast Community Edition 2.4 (20121017) starting at Address[10.23.43.13]:5701
Nov 19, 2013 4:27:57 PM com.hazelcast.system
INFO: [10.23.43.13]:5701 [CERT] Copyright (C) 2008-2012 Hazelcast.com
Nov 19, 2013 4:27:57 PM com.hazelcast.impl.LifecycleServiceImpl
INFO: [10.23.43.13]:5701 [CERT] Address[10.23.43.13]:5701 is STARTING
Nov 19, 2013 4:27:57 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:27:57 PM com.hazelcast.impl.MulticastJoiner
INFO: [10.23.43.13]:5701 [CERT] Connecting to master node: Address[10.23.43.14]:5701
Nov 19, 2013 4:27:57 PM com.hazelcast.nio.ConnectionManager
INFO: [10.23.43.13]:5701 [CERT] 54106 accepted socket connection from /10.23.43.14:5701
Nov 19, 2013 4:27:57 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:27:57 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:27:58 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:27:58 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:27:59 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:27:59 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:28:00 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:28:00 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:28:01 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:28:01 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:28:02 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:28:02 PM com.hazelcast.impl.Node
INFO: [10.23.43.13]:5701 [CERT] ** setting master address to Address[10.23.43.14]:5701
Nov 19, 2013 4:28:02 PM com.hazelcast.cluster.ClusterManager
INFO: [10.23.43.13]:5701 [CERT]

Members [2] {
        Member [10.23.43.14]:5701
        Member [10.23.43.13]:5701 this
}

Nov 19, 2013 4:28:04 PM com.hazelcast.impl.LifecycleServiceImpl
INFO: [10.23.43.13]:5701 [CERT] Address[10.23.43.13]:5701 is STARTED
Nov 19, 2013 4:28:04 PM com.hazelcast.impl.management.ManagementCenterService
INFO: [10.23.43.13]:5701 [CERT] Hazelcast will connect to Management Center on address:     http://localhost:8080/mancenter/
Nov 19, 2013 4:28:04 PM com.hazelcast.config.UrlXmlConfig
INFO: Configuring Hazelcast from 'jndi:/localhost/pwc-ui/WEB-INF/classes/hazelcast.xml'.
Nov 19, 2013 4:28:04 PM com.hazelcast.web.WebFilter
INFO: sticky:true, debug: true, shutdown-on-destroy: true, map-name: my-sessions
Nov 19, 2013 4:28:05 PM org.apache.catalina.startup.HostConfig deployDescriptor

CERT 组的节点 2(注意删除并重新添加)

Nov 19, 2013 4:27:11 PM com.hazelcast.nio.Connection
INFO: [10.23.43.14]:5701 [CERT] Connection [Address[10.23.43.13]:5701] lost. Reason: java.io.IOException[Connection reset by peer]
Nov 19, 2013 4:27:11 PM com.hazelcast.nio.ReadHandler
WARNING: [10.23.43.14]:5701 [CERT] hz.pwc.IO.thread-1 Closing socket to endpoint Address[10.23.43.13]:5701, Cause:java.io.IOException: Connection reset by peer
Nov 19, 2013 4:27:12 PM com.hazelcast.nio.SocketConnector
INFO: [10.23.43.14]:5701 [CERT] Could not connect to: /10.23.43.13:5701. Reason: ConnectException[Connection refused]
Nov 19, 2013 4:27:13 PM com.hazelcast.nio.SocketConnector
INFO: [10.23.43.14]:5701 [CERT] Could not connect to: /10.23.43.13:5701. Reason: ConnectException[Connection refused]
Nov 19, 2013 4:27:14 PM com.hazelcast.nio.SocketConnector
INFO: [10.23.43.14]:5701 [CERT] Could not connect to: /10.23.43.13:5701. Reason: ConnectException[Connection refused]
Nov 19, 2013 4:27:14 PM com.hazelcast.nio.ConnectionMonitor
WARNING: [10.23.43.14]:5701 [CERT] Removing connection to endpoint Address[10.23.43.13]:5701 Cause => java.net.ConnectException {Connection refused}, Error-Count: 5
Nov 19, 2013 4:27:14 PM com.hazelcast.cluster.ClusterManager
INFO: [10.23.43.14]:5701 [CERT] Removing Address Address[10.23.43.13]:5701
Nov 19, 2013 4:27:14 PM com.hazelcast.impl.PartitionManager
INFO: [10.23.43.14]:5701 [CERT] Starting to send partition replica diffs...true
Nov 19, 2013 4:27:14 PM com.hazelcast.cluster.ClusterManager
INFO: [10.23.43.14]:5701 [CERT]

Members [1] {
        Member [10.23.43.14]:5701 this
}

Nov 19, 2013 4:27:18 PM com.hazelcast.impl.PartitionManager
INFO: [10.23.43.14]:5701 [CERT] Total 0 partition replica diffs have been processed.
Nov 19, 2013 4:27:18 PM com.hazelcast.impl.PartitionManager
INFO: [10.23.43.14]:5701 [CERT] Re-partitioning cluster data... Immediate-Tasks: 0, Scheduled-Tasks: 0
Nov 19, 2013 4:27:57 PM com.hazelcast.nio.SocketAcceptor
INFO: [10.23.43.14]:5701 [CERT] 5701 is accepting socket connection from /10.23.43.13:54106
Nov 19, 2013 4:27:57 PM com.hazelcast.nio.ConnectionManager
INFO: [10.23.43.14]:5701 [CERT] 5701 accepted socket connection from /10.23.43.13:54106
Nov 19, 2013 4:27:57 PM com.hazelcast.web.WebFilter
INFO: Created new session with id: HZ650FDF62693F45A99AC0C30BBD8840B0
Nov 19, 2013 4:27:57 PM com.hazelcast.web.WebFilter
INFO: 195 is sessions.size and originalSessions.size: 195
Nov 19, 2013 4:27:57 PM com.hazelcast.web.WebFilter
INFO: PUTTING SESSION HZ650FDF62693F45A99AC0C30BBD8840B0
Nov 19, 2013 4:28:02 PM com.hazelcast.cluster.ClusterManager
INFO: [10.23.43.14]:5701 [CERT]

Members [2] {
        Member [10.23.43.14]:5701 this
        Member [10.23.43.13]:5701
}

Nov 19, 2013 4:28:02 PM com.hazelcast.impl.PartitionManager
INFO: [10.23.43.14]:5701 [CERT] Re-partitioning cluster data... Immediate-Tasks: 271, Scheduled-Tasks: 0
Nov 19, 2013 4:28:24 PM com.hazelcast.web.WebFilter
INFO: Created new session with id: HZAD50E5F483CC448C9FA7CB66D65848BB
Nov 19, 2013 4:28:24 PM com.hazelcast.web.WebFilter
INFO: 196 is sessions.size and originalSessions.size: 196
Nov 19, 2013 4:28:24 PM com.hazelcast.web.WebFilter
INFO: PUTTING SESSION HZAD50E5F483CC448C9FA7CB66D65848BB
Nov 19, 2013 4:28:24 PM com.hazelcast.web.WebFilter
INFO: Request is instance of RequestWrapper! Continue...
Nov 19, 2013 4:28:24 PM com.hazelcast.web.WebFilter
INFO: Request is instance of RequestWrapper! Continue...
Nov 19, 2013 4:28:24 PM com.hazelcast.web.WebFilter
INFO: Request is instance of RequestWrapper! Continue...
Nov 19, 2013 4:28:24 PM com.hazelcast.web.WebFilter
INFO: Request is instance of RequestWrapper! Continue...
Nov 19, 2013 4:28:50 PM com.hazelcast.web.WebFilter
INFO: Created new session with id: HZC9553A4C330044CA8A0C20549EE23BF0
Nov 19, 2013 4:28:50 PM com.hazelcast.web.WebFilter
INFO: 197 is sessions.size and originalSessions.size: 197
Nov 19, 2013 4:28:50 PM com.hazelcast.web.WebFilter
INFO: PUTTING SESSION HZC9553A4C330044CA8A0C20549EE23BF0
Nov 19, 2013 4:28:50 PM com.hazelcast.web.WebFilter
INFO: Request is instance of RequestWrapper! Continue...
Nov 19, 2013 4:28:50 PM com.hazelcast.web.WebFilter
INFO: Request is instance of RequestWrapper! Continue...
Nov 19, 2013 4:28:50 PM com.hazelcast.web.WebFilter
INFO: Request is instance of RequestWrapper! Continue...
Nov 19, 2013 4:28:50 PM com.hazelcast.web.WebFilter
INFO: Request is instance of RequestWrapper! Continue...
10069.275: [GC [PSYoungGen: 693173K->3458K(695488K)] 877908K->188718K(2093632K), 0.0224650 secs] [Times: user=0.04 sys=0.00, real=0.02 secs]
Nov 19, 2013 4:29:18 PM com.hazelcast.web.WebFilter
INFO: Created new session with id: HZE46365454C2C45F98A7947AC40E404BB
Nov 19, 2013 4:29:18 PM com.hazelcast.web.WebFilter
INFO: 198 is sessions.size and originalSessions.size: 198
Nov 19, 2013 4:29:18 PM com.hazelcast.web.WebFilter
INFO: PUTTING SESSION HZE46365454C2C45F98A7947AC40E404BB
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 spring 配置 Hazelcast 进行会话缓存,同时将其限制为一组节点? 的相关文章

  • 无法使用 JHipster 访问 API 文档

    我一直在尝试访问 JHipster 生成的 Spring 应用程序生成的 Swagger UI 我尝试通过 swagger ui html 进行访问 因为这在其他项目中效果很好 但这次不行 我还查找了安全配置类并尝试了所有引用 swagge
  • 了解 JPMS 模块的错误

    我很难理解这些错误的含义 更不用说开始解决它们了 我正在尝试将java平台模块 使用jdk 14 与一个简单的 基于gradle的多模块 项目一起使用 一切都与jdk 8完美配合 该项目使用了 spring boot 和 spring da
  • 超出 WCF 最大并发会话数

    我的公司申请遇到了问题 我将总结系统的关键要素 我公司的系统几年来一直在 Windows XP 和 7 Home Pro Basic 机器上运行 它是用 NET 4 0 编写的 基于 WCF 它使用默认的限制值 MaxConcurrentS
  • Spring MVC:ModelAndView 对象没有被传送到视图

    我目前正在尝试将变量从控制器显示到视图中 但视图未显示它们 谢谢你的帮助 用户控制器 java import org springframework stereotype Controller import org springframew
  • 在超类中注入没有 @Autowired 的 @Repository bean 的派生属性

    我想使用 Repository spring注释来避免在context xml中添加bean 我使用 ibatis 集成 所以我的存储库类如下所示 Repository userDao public class UserDaoMybatis
  • Mongo 可审核的 ZonedDateTime 字段在 Spring Boot 2 中不起作用

    在 Spring Boot 项目中 我使用 CreatedDate 之类的注释来保存有关创建 更新相应文档的日期的信息 整个项目都使用 ZonedDateTime 因此带注释的字段也是 ZonedDateTime 为了实现 Mongo 的日
  • bean 实例化失败:指定的类是一个接口

    我在创建用于依赖注入的 bean 时遇到问题 这是场景 我正在处理 MongoDB 存储库 我还创建了一个使用它的类 我正在尝试实例化两者的 bean 实例 MongoDB 存储库 Repository public interface P
  • spring mvc 跟踪引用页面

    在基于注释的弹簧控制器中 如果用户正在url com first page并点击一个链接或提交一份表格指出url com second page 如何制作second page知道url of first page所以这样second pa
  • 在 Java 中创建带注释的对象时收到通知

    Intent 我有一个自定义 Java 注释 DynamicField public class RESTEndpointInvoker DynamicField key httpTimeout private long httpTimeo
  • Spring Transactional 减慢了整个过程

    我正在尝试分析我有两堂课的情况 其中一个类是 ProcessImpl 它是起点并在内部调用其他子事务 我不知道出了什么问题 processImpl正在导入一些东西并将相关数据写入数据库 Specs Spring orm版本 3 2 18 发
  • Spring Boot 访问 H2 控制台

    我有一个基本的 Spring Boot 应用程序 嵌入式 Tomcat Thymeleaf 模板引擎 我创建了这个 bean 来访问控制台 Bean public ServletRegistrationBean h2ConsoleServl
  • @WebAppConfiguration 未注入

    我正在尝试使用 Spring 3 2 1 创建 spring mvc 测试 经过一些教程后 我认为这会很简单 这是我的测试 RunWith SpringJUnit4ClassRunner class ContextConfiguration
  • 在会话中检索并保存 gridview

    当我在文本框中写入我的名字时 我有一个用于搜索的页面 例如 它将搜索并在 GridView 中显示结果 我正在使用一个EntityDataSource with a QueryExtender所以我没有用C 编写任何代码 问题是 在 Gri
  • Jackson:在反序列化时获得空引用

    我正在使用 spring mvcrestful服务 通过添加依赖项 我的其余控制器会自动generate json从我的response entities 依赖性 jackson 2 9 0 compile com fasterxml ja
  • 我应该使用 Java 8 默认方法来手动实现 Spring 数据存储库方法吗?

    当使用新的 Spring Data Evans 版本时 能够使用 java 8 附带的一些好东西真是太好了 其中之一是接口中的默认实现 下面的存储库使用 QueryDSL 来确保查询类型安全 我的问题是 在我写这篇文章之前 我使用了单独的模
  • 销毁Session但保留flashdata

    我在用坦克验证 http www konyukhov com soft tank auth 用于我的 CI 1 7 3 应用程序中的用户管理 一切工作正常 但我正在尝试设置flash message当用户注销时显示 问题是 this gt
  • Spring Cloud-SQS

    我正在尝试使用 Spring Cloud 框架获得一个简单的队列处理程序 但是 我已成功让消息处理程序轮询队列 我看到的问题是 当我将消息发布到队列时 我的处理程序无法将有效负载解组到所需的 java 对象中 MessageMapping
  • 导入java spring项目后如何构建maven

    你好 我是 java spring 概念的新手 所以我下载了一个示例spring应用程序并将其导入到eclipse中 我已经阅读了spring教程 要么我必须将maven安装到eclipse中才能运行spring项目 所以我已经安装了mav
  • 使用核心 Node.js 进行会话管理,无需 Express.js

    如何在核心 Node js 非express js 项目中处理 创建用于服务器端会话管理的中间件 我可以找到基于 Express 的项目的模块 但不能找到核心 Node js 的模块 请向我推荐任何用于非express js 项目的模块或中
  • 使用 java.util.Set 时的 Jackson bug(或功能!?) - mySet.size() 始终为 1

    我正在使用 Jackson 2 2 0 和 Spring 3 2 0 以及 Hibernate 4 2 2 我最近不得不通过 POST 向服务器发送一组对象 cancelationDate 2013 06 05 positions pric

随机推荐

  • %timeit 和变量的重新分配

    令人惊讶的 ipython 魔法 timeit error In 1 a 2 In 2 timeit a 2 a Traceback most recent call last File site packages IPython core
  • 如何判断 Python 模块是否从模块内重新加载()

    当编写Python模块时 有没有办法判断模块是被导入还是被重新加载 我知道我可以创建一个类 并且 init 仅在第一次导入时被调用 但我没有计划创建一个类 不过 如果没有一种简单的方法来判断我们是被导入还是被重新加载 我会的 The 的文档
  • 如何制作自定义组件属性?

    我需要帮助来制作一个控件属性 当您单击它时 它会弹出一个自定义对话框 例如设置 就像 TPicture 一样 有什么想法或建议吗 如果您的类用作其他组件的属性 并且您想使用对象检查器来调用对话框 那么您必须实现并注册一个自定义属性编辑器 例
  • 如何在 Android 中发送电子邮件? [复制]

    这个问题在这里已经有答案了 如何在 Android 上用代码发送一封简单的电子邮件 Intent sendIntent sendIntent new Intent Intent ACTION SEND sendIntent putExtra
  • 在Matlab中,如何改变轴方向?

    我一直在 Matlab 中编写一个脚本来绘制 3D 图像 方法是使用plot3 轴在此区间内运行 x 1 gt 0 y 0 01 gt 0 z 0 gt 1 结果如下图所示 现在我想更改轴的方向 并使用此轴方向重新绘制图形 x 0 gt 1
  • 使用通配符删除文件 - exec 与 unlink

    我正在编写一个 php 脚本 我想使用通配符 从给定文件夹中删除一些文件 我找到了一些工作示例 例如this one https stackoverflow com questions 5535202 delete images from
  • 在 Rmarkdown knit 输出中指定 ggplot 图形的高度和宽度

    我用 ggplot2 创建了一个图 其中 x 轴标签不可读 除非该图大于默认值 在 Rstudio 中查看时 我可以动态调整大小 使用 ggsave 保存时 我可以指定高度和宽度 我如何在 Rmarkdown 文件中执行此操作 以便输出包含
  • 如何在routes.rb中传递查询字符串进行重定向

    我的routes rb中有一个正常运行的重定向 如下所示 match invoices gt redirect dashboard 我现在想添加一个查询字符串 以便 例如 invoices show overdue 将被重定向到 dashb
  • r 中的关联矩阵

    corrplot 允许您在 R 中绘制相关矩阵的方式 知道如何在 R 中绘制关联矩阵吗 其中关联方法使用任何用户指定的方法 例如 Cramer 的 V 您问题的答案很大程度上取决于您获得的数据和具体的关联方法 我假设您有一堆名义变量 并希望
  • 更新 ios 和 xcode 后部署时出现错误“Xcode 无法找到安装此版本的软件映像”

    我不断收到错误 部署时 Xcode 找不到安装此版本的软件映像 我将 iPhone 升级到了 6 1 3 版本 最近也将 xcode 更新到了最新版本 在此之前 我可以将应用程序部署到手机 但现在我的应用程序无法部署到我的设备 我是否必须重
  • 获取 MySQL 表中第二高的值

    我有一个这样定义的员工和工资表 name type VARCHAR salary type INTEGER 我可以使用什么查询来获得该表中第二高的薪水 这是一个解释关系的因素 Name Salary Jim 6 Foo 5 Bar 5 St
  • 在sklearn中保存数据

    我正在使用 scikit learn 对文本文档进行聚类 我正在使用 CountVectorizer TfidfTransformer 和 MiniBatchKMeans 类来帮助我做到这一点 新的文本文档一直被添加到系统中 这意味着我需要
  • Rails 3 路线和模块

    我的模块中有一个 AR 模型 class Long Module Path Model lt ActiveRecord Base end 并想要使用以下路由 没有模块名称 因为它更容易编写和记住 resources models 但是 Ra
  • Excel 计数范围内唯一的 if

    如果 B 列是一个值 可以使用什么公式来计算 A 列中的唯一值 我在网上看到过很多 但当仅使用列范围时 它们似乎都不起作用 数据的长度将有所不同 因此只能使用列引用 这有效 SUMPRODUCT A1 A18 lt gt B1 B18 D
  • IndexedDB模糊搜索

    好吧 首先 对不起我的英语 我正在从事一个网络项目 当我在输入框中键入内容时 该项目会显示建议 但我想使用 IndexedDB 来提高 Firefox 中的查询速度 对于WebSQL我有这样一句话 db transaction functi
  • Numpy:堆叠屏蔽数组并计算最小值/最大值

    我正在使用屏蔽数组 我想计算不同数组 列的最大值 如果整个数组被屏蔽 我就会遇到问题 Example import numpy as np x np ma array np array 1 2 3 4 100 mask True True
  • ASP.NET Core 的当前上下文中不存在名称“model”

    我正在尝试使用 ASP NET Core 开发一个带有插件的网站 我有我的主要项目 asp net Web 应用程序 它运行良好 我有一个类库项目 其中的控制器也可以正常工作 但我有一个问题的视图 当我打开 cshtml 文件时 我可以看到
  • 解析服务器仪表板登录

    所以 我是 Android Studio 的新手 我正在一步步学习在线课程 我在 AWS 上使用 ParseServer 我已经成功获取了我的 appId 等 并且可以直接从浏览器连接 Java SSH 客户端 我的应用程序可以成功将信息存
  • Identity Server 4:为什么我收到unauthorized_client?

    这是我的 mvc 与身份服务器连接的初始设置 app UseOpenIdConnectAuthentication new OpenIdConnectAuthenticationOptions AuthenticationType oidc
  • 如何使用 spring 配置 Hazelcast 进行会话缓存,同时将其限制为一组节点?

    我需要使用 Spring 设置 Hazelcast 会话缓存 使用 hazelcast 文档中的配置很简单 然而 其不足 我需要为我的每个环境 DEV QA PROD 使用不同的配置文件 或者 理想情况下 我想使用 spring bean