Tag: 序列化

如何将非可序列化对象转换为字节数组?

我正在尝试使用javax.crypto.Cipher.doFinal(byte [])方法来加密对象。 但是,出于安全原因,该对象无法序列化。 那么,如何在没有序列化的情况下将对象转换为字节数组? –update 使用序列化是使用此Cipher方法的唯一方法吗? 因为据我所知,重要数据不应该是可序列化的。

如何在不实现Serializable接口的情况下序列化/反序列化对象?

如果邮件发送到我的收件箱,我会收到一条消息,然后我将内容插入到数据库中。 我有一个org.springframework.integration.core.Message,如下所示: public void receive(Message message) { //I am inserting message contents into DB } 现在,如果发生故障,我想要有故障安全恢复机制,我想的是将Message对象序列化为一个文件,然后反序列化并更新到DB。 问题 1.在这种情况下如何序列化Message对象? 2.除了序列化之外还有其他可以使用的机制吗? 编辑我以前没有做过序列化,我听说类应该实现Serializable以便使用ObjectOutputStream,在这种情况下我不想创建Message的子类,那么如何将Message序列化为File?

如何使用Gson序列化具有Context作为私有成员的自定义对象?

我有一个自定义对象的ArrayList,我试图使用Gson将其作为JSON字符串存储到磁盘。 这适用于我的对象,它只包含基本类型的数据,如字符串,但我有一个类有一个存储Activity的Context的私有成员。 当我尝试使用Gson序列化此类时,我得到以下exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxx.xxxx/com.xxxx.xxxx.MainActivity}: java.lang.SecurityException: Can’t make method constructor accessible at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.SecurityException: Can’t make method constructor accessible at java.lang.reflect.Constructor.setAccessible(Constructor.java:336) at com.google.gson.internal.ConstructorConstructor.newDefaultConstructor(ConstructorConstructor.java:101) at com.google.gson.internal.ConstructorConstructor.get(ConstructorConstructor.java:83) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:96) at com.google.gson.Gson.getAdapter(Gson.java:407) at […]

jackson解串器为通用类型

我需要为具有generics的类编写自定义反序列化器。 我找不到办法做到这一点,但我无法想象我是唯一有这个问题的人。 据我所知,有两种方法可以实现它,但它们都不是可实现的: 在反序列化器的构造函数中为反序列化器提供Class参数不起作用,因为在注册反序列化器时,Type.class与反序列化器实例之间的关系将丢失。 例如: public class Foo {} public class FooDeserializer { public FooDeserializer(Class type) { … } … } // Boilerplate code… module.addDeserializer(Foo.class, new FooDeserializer(Bar1.class)); module.addDeserializer(Foo.class, new FooDeserializer(Bar2.class)); 这不起作用,当ObjectMapper实例获取Foo的实例时,没有可用的generics参数的类型信息(类型擦除),因此它只选择最后注册的反序列化器。 在类中保留generics类型的引用没有帮助,因为类的实例化版本无法传递给反序列化器(接口是readValue(String,Class))。 例如: String json = “…”; ObjectMapper mapper = …; Foo foo = new Foo(Bar1.class); foo = mapper.readValue(json, Foo.class); // Can’t pass empty foo […]

RunTimeException:无法序列化:通过ksoap将字节数组从android发送到java应用程序时出错

我必须将Byte数组发送到我的java应用程序来自Android设备。我在android中使用kso​​ap2,我在java中创建了带有axis2的web服务,以接收该字节数组并在服务器上创建文件以供进一步处理。 让我给你全部解释。我在android设备中记录一个wave文件,然后该wave文件需要在server.i上的java应用程序中发送。我在java应用程序中创建了一个web2服务,其中axis2名称为“get_wave_byte”将传入的字节数组再次转换为波形文件并将其存储在server.and从android设备我发送波形文件作为字节数组以及get_wave_byte()参数中的存储路径。 因此,我已经在android中创建了wave文件,之后我创建了一个将该wave文件转换为byte array的方法。在字节数组中转换wave文件的方法如下… public static byte[] getBytesFromFile(File file) throws IOException { InputStream is = new FileInputStream(file); // Get the size of the file long length = file.length(); // You cannot create an array using a long type. // It needs to be an int type. // Before converting to an int type, check // […]

引用对象的Java序列化是“失去价值”?

美好的一天, 我有一个我无法理解的有趣问题。 我有一个名为“HomeScreenManager”的类,它维护一个名为chat的LinkedList 。 HomeScreenManager实例位于服务器上,负责跟踪连接和聊天记录。 然后我创建了一个名为“ProtocolHomeScreen”的类,它是一个带有LinkedList 的类,称为chat,并实现Serializable。 当需要通过聊天更新所有客户端时,我想发送一个ProtocolHomeScreen。 所以我创建了一个全新的ProtocolHomeScreen实例,我说它是链接的字符串列表“获取”HomeScreen的链表。 换句话说,我要序列化的链表是在另一个类中创建的,但我指的是另一个实例。 问题是数据没有被发送,只有一个空的LinkedList出现在另一边。 我已经逐行完成了调试器并检查了所有变量,在我调用writeObject之前,一切看起来都很好,但是在客户端,当我收到ProtocolHomeScreen实例时,链表是空的! (虽然它不是空的)任何想法? 谢谢! public class HomeScreenManager implements ObjectMessageHandler, Serializable { protected LinkedList users; protected LinkedList chat; protected LinkedList sessions; public HomeScreenManager() { chat = new LinkedList(); users = new LinkedList(); sessions = new LinkedList(); } protected void handleChat(String message) { chat.add(message); ProtocolHomeScreen p = […]

gemfire自定义序列化无济于事

我使用gemfire作为我的缓存。 缓存堆大小远高于100GB。 我发现当我们从客户端将数据放入gemfire缓存时,它会将数据序列化并发送到服务器,而在服务器上,数据以序列化forms存储。 问题: 当我尝试执行任何on-server函数调用时,它会开始反序列化数据并且它非常耗时,有时需要一个多小时来迭代缓存中的对象。 (对象数量接近600万)。 我尝试使用gemfire自定义序列化(DataSerializer类)。 并且所有数据在缓存中所占用的内存量大约为60GB,如果我使用Java默认序列化则相同。 我尝试使用一个名为Kryo https://github.com/EsotericSoftware/kryo的库,这确实有很大帮助,但我仍然不明白为什么gemfire序列化对我没有帮助,因为我正在单独序列化该类的每个属性因此编写类标题和任何其他元数据不应该有任何负担。 任何帮助将非常感激。

如何使用flexjson.deserializer将jsonarray反序列化为java中的List ?

在客户端,我构建了一个像这样的JSOnARRAY: {“filterEntries”:[{“dataName”:”mainContact”,”filterValue”:”BILLGATES”}]}. 在服务器端(java),我可以使用以下方法退出值: jfilter = JSONValue.parse(jsonFilterStr); //jsonFilterStr={“filterEntries”:[{“dataName”:”mainContact”,”filterValue”:”BILLGATES”}]}. JSONArray jFilterEntries = (JSONArray) jfilter.get(“filterEntries”); for (int i=0;i<jFilterEntries.size();i++){ JSONObject jFilterEntry = (JSONObject) jFilterEntries.get(i); String dataName = (String) jFilterEntry.get("dataName"); String filterValue = (String) jFilterEntry.get("filterValue"); } 但现有的应用程序正在使用flex.json.deserializer,我无法使用flex.json.deserializer实现相同的function。 我该怎么办? 我希望做这样的事情: JSONDeserializer jsonDeserializer = new JSONDeserializer(); jsonDeserializer.use(null, List.class); List<Map> lMap= (List<Map>)jsonDeserializer.deserialize(params);

ElasticSearch索引问题TransportSerializationException

我正在尝试索引elasticsearch中的一些文档并获得一些错误。 但我无法理解,所以我无法解决它。 以下是错误: org.elasticsearch.transport.TransportSerializationException: Failed to deserialize exception response from stream at org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:173) at org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:125) at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:296) at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443) at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:310) at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268) at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255) at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108) at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318) at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) […]

Java – Class Not Foundexception

我正在研究一个项目(这是IS作业),我们的教授给了我们一个.ser文件和一个Course.java文件(这是他用来创建.ser文件的类)我的问题是当我尝试加载时从.ser文件到数组的数据我得到一个ClassNotFoundException。 我最终做的是在我的项目中创建一个名为与我教授创建的类完全相同的新类,并将其代码复制/粘贴到该类中。 我做了一些研究,我的.class文件在同一个项目文件夹中,我可以使用项目中Course类的方法。 经过一些猜测和检查工作,我知道ClassNotFoundException在第16行被踢回来, test = readData(); 我的代码: import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.Serializable; public class ObjectSort { public static void main(String[] args) throws Exception { Course[] test = new Course[24]; test = readData(); } // end main() // read data from class binary file and put into an array of courses public […]