对不起,这个问题听起来很愚蠢,但在使用Jersey开发我的一些RESTful服务后,我问自己一个问题 - 如果REST只是一个架构,而不是像SOAP这样的协议,为什么我们需要像JAX-RS这样的规范?
我实际上搜索了诸如"通过HTTP在servlet和RESTful服务之间有什么区别"之类的问题,并总结了社区的答案,我得到了:
根据这些答案,我想如果我编写一个使用JAXB的servlet(用于处理自动序列化),并且我在servlet代码中有效地使用GET/POST/PUT/DELETE,我不使用像Jersey这样的工具,因此JAX-RS.
我知道通过这个声明我非常错误,请纠正我.
PS:当我不得不在PHP中开发一些RESTful服务时,实际上出现了这种疑问.在继续浏览一些RESTful PHP代码之后,我意识到它们只是相同的旧PHP脚本,并且有一些辅助方法来处理XML/JSON.
我一直在使用以下代码连接到谷歌的服务之一.这段代码在我的本地机器上工作正常:
HttpClient client=new DefaultHttpClient();
HttpPost post = new HttpPost("https://www.google.com/accounts/ClientLogin");
post.setEntity(new UrlEncodedFormEntity(myData));
HttpResponse response = client.execute(post);
Run Code Online (Sandbox Code Playgroud)
我将此代码放在生产环境中,该环境已阻止Google.com.根据要求,他们允许我访问IP:74.125.236.52(这是Google的IP之一),允许与Google服务器进行通信.我编辑了我的hosts文件也添加了这个条目.
我仍然无法访问URL,我想知道为什么.所以我用上面的代码替换了:
HttpPost post = new HttpPost("https://74.125.236.52/accounts/ClientLogin");
Run Code Online (Sandbox Code Playgroud)
现在我收到这样的错误:
javax.net.ssl.SSLException:证书中的主机名不匹配:<74.125.236.52>!= <www.google.com>
我想这是因为Google有多个IP.我不能让网络管理员允许我访问所有这些IP - 我甚至可能没有得到这整个列表.
我现在应该怎么做 ?Java级别有解决方法吗?或者它完全掌握在网络人手中?
我对媒体流非常陌生,我有一些基本的疑虑要明确:
据我所知,HTTP流(通过Apache)和RTMP流(通过Red5)之间的区别在于流媒体服务器提供缓冲和提前控制,如搜索等.我是对的吗?
我可以只传输来自RT5服务器(如Red5)的Flash视频吗?如果我必须传输不同格式的文件,我是否必须使用HTTP流?我可以使用像xuggler这样的工具来动态转码文件并根据Red5服务器的请求发送吗?
我提出了所有这些疑虑,因为我必须为所有移动客户端提供流媒体 - iPhone,黑莓,Android - iPhone不支持闪存,所以去Red5是个好主意吗?
编辑:我知道如何处理配置更改; 此查询正在使用"应用程序"类执行此任务.
我可以看到许多示例,其中Application类被用作维护状态变量的"全局".但我很好奇是知道使用我一直认为与个人活动生命周期相关的方法...比如onConfigurationChanged()和registerComponentCallbacks().
我找不到任何关于如何使用这些方法的例子.我请求一些用例/模式,其中覆盖这些方法会有所帮助.
谢谢 !
在我的Android代码上(使用Apache HTTP Client)我已经设置了以下参数:
HttpConnectionParams.setConnectionTimeout(params, 30 * SECOND_IN_MILLIS);
HttpConnectionParams.setSoTimeout(params, 30 * SECOND_IN_MILLIS);
Run Code Online (Sandbox Code Playgroud)
我正在连接到HTTPS网络服务.在慢速网络上,我得到一个ConnectionTimeoutException
预期的30秒(然后我重试); 但是有"很少"的情况(没有我能观察到的模式),我得到以下任何一种:
javax.net.ssl.SSLException:读取错误:ssl = 0xe71160:系统调用期间的I/O错误,连接超时javax.net.ssl.SSLException:写入错误:ssl = 0xe71160:系统调用期间的I/O错误,Broken管
我从SO获得了这个代码,它仍在测试中:
registry.register(new Scheme("https",
SSLCertificateSocketFactory.getHttpSocketFactory(30 * SECOND_IN_MILLIS, null), 443));
Run Code Online (Sandbox Code Playgroud)
我可以理解连接建立超时和套接字超时 - 我的查询是否真的需要SSL的第3次超时?目的与SO_TIMEOUT有何不同?
PS:这些例外情况似乎是在读取/写入数据时出现的 - 这应该导致数据丢失 - 但我也观察不到.
我有一个sinlgeton对象,它持有一个方法,巫婆不同步.单个用户可以一次访问单例 - 如果多个客户端访问该对象会发生什么?是否会以先来先服务的方式提供对象引用...也就是说,一个客户端是否必须等待第一个完成对象,或者它将在内存中被赋予相同的对象引用?
我对单例中未同步的方法感到奇怪.如果2个客户端使用不同的参数调用Singleton.method(param) - 它们不会为彼此创建问题吗?
这是一个新手查询.我经历了几个类似的帖子,但他们没有给我足够的帮助.这篇文章有两个查询,但由于它们的根似乎是相同的,因此我将它放在一起.
我遇到了以下代码段:
var Server = module.exports.Server = function Server(listener) {
if (!(this instanceof Server)) return new Server(listener);
//other code
}
module.exports.createServer = function(listener) {
return new Server(listener);
};
Run Code Online (Sandbox Code Playgroud)
我无法理解使用 if (!(this instanceof Server)) ;
何时可以在此处指向服务器?
我尝试对此进行快速测试:
var createTest = function(){
console.log(this.toString());
return new Test();
};
var Test = function Test(){
console.log(this instanceof Test);
console.log(this.toString());
if (!(this instanceof Test))
{
return new Test();
}
}
var tester = createTest();
Run Code Online (Sandbox Code Playgroud)
哪个输出:
[object global]
true
[object Object]
Run Code Online (Sandbox Code Playgroud)
这进一步困扰了我为什么this.toString打印[object Object] - 不应该是[object Test]?
谢谢 …
引用此链接:
一些开发人员认为Java编译器理解标记并相应地工作.这个不对.标签实际上对Java编译器或运行时本身没有任何意义.有些工具可以解释这些标签
.
如果注释中包含的信息只是元数据,那么如果我错误地注释,为什么我的代码不能编译?那个特别的注释应该被忽略吧?
编辑:
仅提供一个示例... Jersey上的简单JAX-RS Web服务使用如下注释:
@Path("mypath")
Run Code Online (Sandbox Code Playgroud)
现在,如果我将其更改为:
@Paths("mypath")
Run Code Online (Sandbox Code Playgroud)
要么
@Path(123)
Run Code Online (Sandbox Code Playgroud)
它不应该阻止我根据上面的链接编译代码...