Tag: 序列化

有一个很好的Java网络库吗?

我目前正在搜索Java网络库。 我想要做的是将XML,JSON或其他序列化消息从客户端发送到另一个客户端和/或客户端到服务器。 我的第一次尝试是为每条消息创建一个POJO,另外还有一个MessageWriter用于发送,MessageReader用于接收它。 加上套接字和error handling。 这是一个很容易出错的工作。 我正在寻找的是一个从套接字中抽象出来的更高级别的库。 此外,它应该支持诸如消息的代码生成之类的东西。 谷歌的协议缓冲区( http://code.google.com/apis/protocolbuffers/ )看起来很有前途。 但有其他选择吗? 重点不在于速度或安全性(目前),它只是应该可靠且具有较少的实施时间。

java + spark:org.apache.spark.SparkException:作业已中止:任务不可序列化:java.io.NotSerializableException

我是新手,并试图运行示例JavaSparkPi.java,它运行良好,但因为我必须在另一个java中使用它我将所有东西从main复制到类中的方法并尝试调用主要方法,它说 org.apache.spark.SparkException:作业已中止:任务不可序列化:java.io.NotSerializableException 代码看起来像这样: public class JavaSparkPi { public void cal(){ JavaSparkContext jsc = new JavaSparkContext(“local”, “JavaLogQuery”); int slices = 2; int n = 100000 * slices; List l = new ArrayList(n); for (int i = 0; i < n; i++) { l.add(i); } JavaRDD dataSet = jsc.parallelize(l, slices); System.out.println(“count is: “+ dataSet.count()); dataSet.foreach(new VoidFunction(){ public […]

当要解析的元素是json字符串的元素时,使用gson解析json的最简单方法是什么?

我正在使用gson将json解析为java bean。 对于我正在使用的API,大量的json结果将结果包含为json对象的第一个属性。 “gson方式”似乎是创建一个等效的包装器java对象,它具有一个目标输出类型的属性 – 但这会导致不必要的一次性类。 这样做有最佳实践方法吗? 例如要解析: {“profile”:{“username”:”nickstreet”,”first_name”:”Nick”,”last_name”:”Street”}} 我要做: public class ParseProfile extends TestCase { public void testParseProfile() { Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); String profileJson = “{\”profile\”:{\”username\”:\”nickstreet\”,\”first_name\”:\”Nick\”,\”last_name\”:\”Street\”}}”; ProfileContainer profileContainer = gson.fromJson(profileJson, ProfileContainer.class); Profile profile = profileContainer.getProfile(); assertEquals(“nickstreet”, profile.username); assertEquals(“Nick”, profile.firstName); assertEquals(“Street”, profile.lastName); } } public class ProfileContainer { protected Profile profile; public Profile […]

在Java中反序列化不受信任的数据有什么安全影响?

反序列化不受信任的数据是否安全,只要我的代码不对反序列化对象的状态或类进行任何假设,或者仅仅反序列化的行为是否会导致不希望的操作? (威胁模型:攻击者可以自由修改序列化数据,但这就是他所能做的)

Eclipse是否有java序列化文件的编辑器/查看器?

我正在使用ObjectOutputStream(FileOutputStream(File))序列化我的对象,并使用类似的InputStreams它们进行反序列化。 有没有办法查看这些序列化文件(最好是在eclipse中),所以我可以检查是否写了所有必要的属性? 编辑:谷歌搜索是否定的

如何找到序列化Java对象的serialVersionUID?

我有几个可序列化的类,编译时没有指定serialVersionUID。 我现在需要向这些类添加一些数据成员,但希望保留一些已经序列化的对象。 有没有找到这些序列化对象的serialVersionUID,以便我可以在源代码中指定相同的ID?

在Java中查找不可序列化字段的好方法

我有一个非常复杂的Java对象来序列化(几周前工作正常)。 在此期间实现了很多之后,序列化现在无法抛出以下exception: java.io.NotSerializableException: sun.java2d.SunGraphics2D 我已经检查了所有似乎相关的类,但是在其中任何一个中都没有找到一个包含Graphics2D类型的字段(或类似的类型,如BufferedImage等)。 正如我所看到的,问题也可能是我正在使用一个类(来自库等),它本身是可序列化的,但有一个不可序列化类型的Graphics2D字段。 所以,我的问题是:是否有一种“好”的方法来找到序列化失败的地方? 检查所有类和所做的所有更改似乎都不可行。 先感谢您 卢卡斯 PS。 以下是exception的完整堆栈跟踪: java.io.NotSerializableException: sun.java2d.SunGraphics2D at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) at java.io.ObjectOutputStream.access$300(ObjectOutputStream.java:162) at java.io.ObjectOutputStream$PutFieldImpl.writeFields(ObjectOutputStream.java:1707) at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:482) at java.awt.Container.writeObject(Container.java:3697) at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) […]

是否可以编写Marker接口

我已经完成了以下教程: http://www.javaworld.com/community/node/2915 在阅读完上面的文章之后,我觉得,编写Marker接口是不可能的,因为,如何指导编译器,它是什么标记,它嵌入到Marker接口的.class文件中。 如果我错了,请纠正我。 欢呼:)

flink – 使用匕首注射 – 不可序列化?

我使用Flink(最新通过git)从kafka流到cassandra。 为了简化unit testing我通过Dagger添加dependency injection。 ObjectGraph似乎正在正确设置自己,但是’内部对象’被Flink标记为“不可序列化”。 如果我直接包含这些对象,它们会起作用 – 那么区别是什么? 有问题的类实现了MapFunction和@Inject一个用于cassandra的模块和一个用于读取配置文件的模块。 有没有办法建立这个,所以我可以使用后期绑定或Flink使这不可能? 编辑: fwiw – dependency injection(通过匕首)和RichMapFunction不能共存。 Dagger不允许您包含任何在其定义中扩展的对象。 进一步: 通过Dagger Lazy 实例化的对象也不会序列化。 线程“main”中的exceptionorg.apache.flink.api.common.InvalidProgramException:对象com.someapp.SaveMap@2e029d61不可序列化 … 引起:java.io.NotSerializableException:dagger.internal.LazyBinding $ 1

GSON序列化非常慢

我正在尝试使用GSON序列化7000 POJO的数组,并且序列化时间非常慢。 序列化以下对象的数组大约为3-5秒: public class Case { private Long caseId; private Key orgKey; private Key workflowKey; private Key creatorKey; private Date creationTimestamp; private Date lastUpdatedTimestamp; private String name; private String stage; private String notes; } 使用自定义序列化器/反序列化器序列化关键字段: public class GsonKeySerializerDeserializer implements JsonSerializer<Key>, JsonDeserializer<Key>{ @Override public JsonElement serialize(Key src, Type typeOfSrc, JsonSerializationContext arg2) { return new JsonPrimitive(src.getString()); […]