以前一直不知道sessionId 是在什么地方生成的。一脸蒙圈。以及生成规则。
这个是在容器里生成的
今天扒了扒源码。 看的是springBoot 中 内嵌的tomcat 生成sessionId 的方式
在 这个 类 中: org.apache.catalina.util.StandardSessionIdGenerator

`

``java
public class StandardSessionIdGenerator extends SessionIdGeneratorBase {
    public StandardSessionIdGenerator() {
    }

    public String generateSessionId(String route) {
        byte[] random = new byte[16];
        int sessionIdLength = this.getSessionIdLength();
        StringBuilder buffer = new StringBuilder(2 * sessionIdLength + 20);
        int resultLenBytes = 0;

        while(resultLenBytes < sessionIdLength) {
            this.getRandomBytes(random);

            for(int j = 0; j < random.length && resultLenBytes < sessionIdLength; ++j) {
                byte b1 = (byte)((random[j] & 240) >> 4);
                byte b2 = (byte)(random[j] & 15);
                if (b1 < 10) {
                    buffer.append((char)(48 + b1));
                } else {
                    buffer.append((char)(65 + (b1 - 10)));
                }

                if (b2 < 10) {
                    buffer.append((char)(48 + b2));
                } else {
                    buffer.append((char)(65 + (b2 - 10)));
                }

                ++resultLenBytes;
            }
        }

        if (route != null && route.length() > 0) {
            buffer.append('.').append(route);
        } else {
            String jvmRoute = this.getJvmRoute();
            if (jvmRoute != null && jvmRoute.length() > 0) {
                buffer.append('.').append(jvmRoute);
            }
        }

        return buffer.toString();
    }
}``

由此可见。生成的sessionId 是 16个随机字节+jvmRoute信息,且jvmRoute默认为空字符串,设置的话需要通过系统变量jvmRoute获取。
理论上 分布式环境会存在重复的问题。