/ / Идентифициране на проблемите със сериализацията в некластеризирана среда - java, сериализация, изчисление на клъстери, разпределение, копиране

Идентифицирайте проблемите, свързани със сериализацията, в не-клъстерирана среда - Java, сериализация, клъстерно-изчислително, подреждане, сесия-репликация

Имам интегрирано приложение JSF-Spring. Приложението работи добре в моята не-клъстерна среда. Когато разгърнете приложението в клъстерирана среда [wildfly 8.0.0], се сблъсквам с различни проблеми около сериализацията. Някои от примерите са, че класовете DTO не са изпълнени Serializable, се опитва да сериализира класа Logger, който не искам и т.н.

Приложението, разположено в клъстеризирана среда, има <distributable /> таг в моя web.xml, така че се опитва репликация на сесията между възлите и която не се поддава на случаи, които не могат да се сериализират.

Всички разработчици може да не следват указанията в тези редове, което причинява някои от тези случаи.

Така че въпросът ми е какъв е най-добрият вариант да се видят всички тези проблеми със сериализацията в моя тестов сървър [wildfly 8.0.0], който не е клъстерна среда.

Добавяне на един детайл за изключение за по-голяма яснота:

Caused by: java.lang.RuntimeException: Failure to marshal argument(s)
at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.marshallCall(CommandAwareRpcDispatcher.java:333)
at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.processSingleCall(CommandAwareRpcDispatcher.java:352)
at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommand(CommandAwareRpcDispatcher.java:167)
... 76 more
Caused by: org.infinispan.commons.marshall.NotSerializableException: com.org.account.service.AccountExpServiceImpl
Caused by: an exception which occurred:
in field accountExpService
in field m
in object java.util.HashMap@85b67fbe
in object org.jboss.as.clustering.marshalling.SimpleMarshalledValue@85b67fbe
in object org.infinispan.commands.write.ReplaceCommand@ec0c12ad
in object org.infinispan.commands.tx.PrepareCommand@ce32eb5a

Отговори:

2 за отговор № 1

Използваме следната помощна програма, за да проверим дали Infinispan може да сериализира даден обект или не:

org.infinispan.manager.DefaultCacheManager.getCacheManagerConfiguration().serialization().marshaller().isMarshallable(objectToCheck);

Това всъщност е част от нашите тестове.


1 за отговор № 2

Можете да имате различни профили за локално използване на приложението web.xml без <distributable/> и едно за разполагане, което е готово и следователно с <distributable/> маркер. Ако използвате сграда Maven, приставката за войни и профилите са това, което трябва да разгледате. виждам този отговор за осигуряване на зависим от профила web.xml

въпреки това това решение променя драстично поведението на системата между Дев и производство среди. Откриването на проблеми със сериализацията само веднъж разгърнати може да бъде скъпо (по отношение на време и усилия).

Затова сортирането на сериализационните въпроси един по един е начинът да се върви.