14. Default method
●
インタフェースに実装が持てるようになった
●
インスタンス変数は当然ながら持てない
default void forEach(BiConsumer<? super K, ? super V> action) {
Objects.requireNonNull(action);
for (Map.Entry<K, V> entry : entrySet()) {
K k;
V v;
try {
k = entry.getKey();
v = entry.getValue();
} catch(IllegalStateException ise) {
// this usually means the entry is no longer in the map.
throw new ConcurrentModificationException(ise);
}
action.accept(k, v);
}
}
30. Enkanフレームワークの擬似REPL
enkan> /middleware app list
ANY defaultCharset (enkan.middleware.DefaultCharsetMiddleware
NONE serviceUnavailable (enkan.middleware.ServiceUnavailableM
ANY stacktrace (enkan.middleware.StacktraceMiddleware@545872d
enkan> /middleware app predicate serviceUnavailable ANY
enkan> /middleware app list
ANY defaultCharset (enkan.middleware.DefaultCharsetMiddleware
ANY serviceUnavailable (enkan.middleware.ServiceUnavailableMi
ANY stacktrace (enkan.middleware.StacktraceMiddleware@545872d
REPL上からMiddlewareの適用条件を操作できる
https://enkan.github.io/
42. Falchion Container
Falchion container architecture
JVM real process
WebApplication
JVM pool
JVM virtual process
JVM virtual process
JVM real process
WebApplication
Listen the same port