JAX-RS和JAX-WS非常适合生成API.但是,他们根本没有解决向后兼容问题.
为了避免在向API引入新功能时破坏旧客户端,您基本上必须接受并提供与之前完全相同的输入和输出格式; 如果找到一个不映射到任何东西的字段,或者类型错误,那么许多XML和JSON解析器似乎都很合适.
一些JSON库,例如Jackson和Gson,提供了一个功能,您可以根据运行时设置为给定对象指定不同的输入/输出表示,这似乎是处理许多情况的版本控制的合适方法.这使得可以通过添加添加和删除字段来提供向后兼容性,因此它们仅根据客户端使用的API的版本显示.
到目前为止,JAXB和我发现的任何其他XML数据绑定库都没有对这个概念提供相应的支持,因此无法为JSON和XML重用相同的注释.将它添加到JAXB-RI或EclipseLink Moxy似乎有可能,但令人生畏.
另一种版本控制方法似乎是对所有已更改的类进行版本化,通常是每次发布API时创建一个新包,并在新包中复制所有修改过的DTO,Service和Resource类,以便所有类型信息是为绑定和调度系统版本化的.这种方法对我来说似乎更加费力.
我的问题是:您是如何设计Jave API提供程序以实现向后兼容的?什么工作,什么没有?
关于该主题的案例研究或博客文章的链接非常感谢; 我做了一些谷歌搜索,但没有找到太多关于此的讨论.
我的应用下载音频文件/sdcard/Music.当我尝试播放它们时,我收到以下错误.
V/MediaPlayer-JNI(2789):setDataSource:path content:// media/external/audio/med ia/2 E/MediaPlayerService(1130):无法打开内容的fd:// media/external/audio/media/2
如果我下载文件/sdcard/,文件播放正常.该程序在下载之前创建子文件夹'Music','sdcard'和'Music'的权限看起来相同.
我正在尝试将我的顶点,索引和纹理点设置为VBO:s并使用我的draw方法绘制它们,所有这些都在TAO/OpenGL TK框架下的C#中.但我的屏幕只显示黑屏.我已经测试过没有VBO:s,然后它可以工作.但是凭借我的顶点,索引和纹理点,我无法成功.
我的代码:
private float[] vertices;
private byte[] indices;
private float[] texture;
private int[] mVertexBuffer;
private int[] mIndicesBuffer;
private int[] mTextureBuffer;
//...Constructor start
vertices = new float[] {
-1.0f, -1.0f, 1.0f,
1.0f, -1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, -1.0f, 1.0f,
1.0f, -1.0f, -1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, -1.0f,
1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, -1.0f,
1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, -1.0f,
-1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, 1.0f,
-1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f, -1.0f, -1.0f,
1.0f, …Run Code Online (Sandbox Code Playgroud) Windows有这样的东西吗?
exec("nohup /usr/bin/php -f sleep.php > /dev/null 2>&1 &");
Run Code Online (Sandbox Code Playgroud) 寻找一种方法,使用JavaScript/JQuery将URL的哈希/片段中的密钥对解析为对象/关联数组
我有一组YYYYMMDDHHMMSS格式的日期/时间字符串,我希望将其转换为date实用程序可读的内容.通常,我可以这样做:
date -d "2010-10-01 12:34:56"
但是,date不喜欢YYYYMMDDHHMMSS:
date -d "20100101123456"..失效日期
所以,我可能需要将字符串细化为先前格式.我在想sed是答案,但它变得非常丑陋.我很确定我的字符串是正确的格式,所以如何轻松转换它们?
我的iphone App显示了一个包含6000个项目列表的表格视图.(这些项目在SQLite文件中)
用户可以搜索这些项目.但是,当我点击搜索栏并开始输入第一个字母时,我需要很长时间才能输入第二个字母.同样,在我开始搜索之前输入每个字母需要很长时间.
有没有办法提高搜索工具栏的打字速度,以便用户可以快速输入5-6个字母进行搜索?
我感谢您的帮助.谢谢!
我有两个通用列表,其中包含相同的对象类型T.例如
oGenList1.Items(0)与oGenList2.Items(3)(它们的属性具有相同的值等)相同.
我正在做这样的事情:
oGenList2.Contains(oGenList1.Items(0))
Run Code Online (Sandbox Code Playgroud)
它总是显示false; 我不明白为什么.你有什么主意吗?我是否必须为类定义任何比较器T以强制此功能正常工作?
我已经添加了Equals功能,但它仍然不起作用.:(我在非常简单的项目中对我的情况进行了简单的模拟,并且它有效.但是我的情况更复杂.我的类继承其他的等等.任何想法为什么它可能不起作用?
(我重写了原来的问题。问题是一样的。)
上面的示例代码不打印图像。它出现在窗口中但不打印。
public static void main(String[] args) {
final JEditorPane ed = new JEditorPane(
"text/html",
"<p>Test<br><img src='http://www.google.es/images/logos/ps_logo2.png'></p>");
JFrame f = new JFrame();
f.setLayout(new BorderLayout());
f.add(ed);
JButton b = new JButton("Print");
f.add(b,BorderLayout.SOUTH);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
ed.print();
} catch (PrinterException ex) {
System.err.println(ex);
}
}
});
f.pack();
f.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)