Tag: web services

RESTful和SOAP Web服务在实践中有何不同?

我正在为PHP应用程序实现Web服务,并试图了解标准Web服务和RESTful Web服务所提供的内容。 我的目的是编写包装器代码以抽象出Web服务细节,以便开发人员可以“实例化远程对象”并使用它们。 以下是我的想法,也许你们中的一些人可以添加你的经验并扩展它: RESTful Web服务 基本上只是“按需提供XML源”,因此您可以为客户端应用程序编写包装器代码,以便它可以通过以下方式查询服务器应用程序: $users = Users::getUsers(“state = ‘CO'”); 这将反过来从远程URL获取XML提要 $ users可以被制作成完整User用户对象的集合,或者 保留为XML,或 变成arrays等 查询脚本(“state =’CO’”)将在服务器端转换为SQL RESTful Web服务通常只能从客户端的视图中读取,尽管您可以编写可以使用POST或GET在服务器上进行更改的代码,例如传递加密令牌以确保安全性,例如: $ users = Users :: addUser($ encryptedTrustToken,’jim’,$ encryptedPassword,’James’,’Taylor’); 这将在服务器应用程序上创建一个新用户。 标准Web服务 标准Web服务最终基本上做同样的事情。 他们的一个优势是客户可以通过WSDL发现他们的细节。 但除此之外,如果我想编写允许开发人员远程实例化,编辑和保存对象的包装代码,我仍然需要实现包装器代码。 SOAP不会为我做任何事情,它可以做到这一点: $soap = new nusoap_client(‘http://localhost/test/webservice_user.php?wsdl’, true); $user = $soap->getProxy(); $lastName = $user->lastName(); 但如果我想编辑并保存: $user->setLastName(‘Jones’); $user->save(); 然后我需要例如处理服务器端的所有状态,SOAP似乎并没有为每个客户端在服务器端保存该对象。 也许我正在使用的PHP SOAP实现存在限制(nusoap)。 也许Java和.NET实现可以做得更多。 很乐意听取您的反馈意见,以清理其中的一些云。

在JAX-WS中重命名参数名称

我使用自下而上的方法在RSA 7.5和Websphere 7中使用JAX-WS创建了一个Web服务。 当我在SOAP UI中打开WSDL时,参数部分显示如下: ? ? ? ? service方法将上述4个元素作为参数来返回员工详细信息。 1)我想用一些有效的名称重命名这个arg0,arg1等。 2)我想删除arg标签上方的 。 (为了从元素名称中删除 ,我使用了@XMLElement(required = true))。 但我不确定在这种情况下在哪里使用此注释:( 请帮忙。 问候,

如何将EJB 3.1公开为REST Web服务?

在Adam Bien的博客上阅读文章时,我在使用EJB 3.1时发现了java restful中的一个新function。 问题是Stateless和Singleton bean可以作为root资源公开。 但是怎么样? 我试着这样做: @Stateless @LocalBean @Path(“Hybrid”) public class RESTEJBSample { @GET @Path(“/demo”) @Produces(MediaType.TEXT_PLAIN) public String something() { return “I am a Hybrid!!!”; } } 当我调用URL http:// localhost:8080 / HybridSample / resources / Hybrid / demo时,我收到404错误。 为了确保JAXRS正在我的项目中工作,我创建了一个简单的pojo资源,以测试它是否正常工作。 @Path(“/genericresource”) public class GenericResource { @GET @Path(“/samplemethod”) @Produces(MediaType.TEXT_PLAIN) public String saySomething() { return “Something!”; […]

如何从JAX-WS Web服务中访问ApplicationContext?

类似于如何从JAX-WS Web服务中访问ServletContext? ,有没有办法访问applicationContext,比这更容易? import javax.annotation.Resource; import javax.jws.WebService; import javax.servlet.ServletContext; import javax.xml.ws.WebServiceContext; import javax.xml.ws.handler.MessageContext; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @WebService public class MyWebService { // boilerplate code begins 🙁 @Resource private WebServiceContext context; private WebApplicationContext webApplicationContext = null; /** * @return * @throws IllegalStateException */ private WebApplicationContext getWebApplicationContext() throws IllegalStateException { if (webApplicationContext != null) return webApplicationContext; […]

Tomcat 6:如何在Web方法调用结束后删除临时文件?

我有一个临时文件,其中包含通过MTOM二进制附件作为SOAP响应的一部分返回的数据。 一旦方法调用“结束”(即完成转移),我想将其丢弃。 这对我来说最好的方法是什么? 我可以弄清楚如何执行此操作的最佳方法是在会话被销毁时删除它们,但我不确定是否有更“直接”的方法来执行此操作。 仅供参考,我不使用Axis,我正在使用jax-ws,如果这很重要的话。 更新:我不确定答案者是否真的理解这个问题。 我知道如何删除java中的文件。 我的问题是: @javax.jws.WebService public class MyWebService { … @javax.jws.WebMethod public MyFileResult getSomeObject() { File mytempfile = new File(“tempfile.txt”); MyFileResult result = new MyFileResult(); result.setFile(mytempfile); // sets mytempfile as MTOM attachment // mytempfile.delete() iS WRONG // can’t delete mytempfile because it hasn’t been returned to the web service client // […]

Jersey REST Webservice在Struts 2中不起作用

我已经使用Jersey REST webservice创建了一个Struts2应用程序,Struts2应用程序工作正常,但其余的webservice无法正常工作,执行URL时 http://localhost:8080/SAMPLE/resources/users/name/manu 我正进入(状态 没有针对namespace / resources / users / name和action name manu映射的Action。 – [未知位置] Struts的版本是否会导致任何问题,因为我使用的是Struts 2.1.6? 任何人都可以告诉我一些解决方案 web.xml : struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* ServletAdaptor com.sun.jersey.spi.container.servlet.ServletContainer com.sun.jersey.config.property.packages otims.usermodules.services 1 ServletAdaptor /resources/* 30 login.jsp struts.xml : : : : UserModulesServices.java : package otims.usermodules.services; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path(“/users”) public […]

SOAP消息到webservice – HTTP响应代码:403用于URL

我尝试将XML文件中的SOAP消息发送到Web服务,然后获取二进制输出并对其进行解码。 端点使用HTTPS协议,因此我在代码中使用了TrustManager来避免PKIX问题。 你可以在这里看到我的代码: import javax.net.ssl.*; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.security.cert.X509Certificate; public class Main{ public static void sendSoapRequest() throws Exception { String SOAPUrl = “URL HERE”; String xmlFile2Send = “.\\src\\request.xml”; String responseFileName = “.\\src\\response.xml”; String inputLine; TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; […]

如何在WebSphere上获得基本身份validation?

好的,所以我一直在Tomcat上运行Java / Jersey Web服务,基本身份validation工作正常。 我已经在项目的web.xml文件中设置了权限,用户在服务器上的tomcat-users.xml中设置了权限。 效果很好。 问题是,现在我必须将这个项目转移到WebSphere,而这远远不如基本身份validation的实现那么简单。 我已经看到了这个问题: Websphere 6.1和BASIC身份validation,并查看了这个 pdf的第7章,如同建议,但我似乎无法找到正确的设置(我没有像大多数方法一样使用标记为’启用全局安全’的选项) ,我正在尝试运行我的项目,而pdf是特定于项目的。 那么要清楚地问我的问题,在WebSphere 6.1上启用基本身份validation的最简单方法是什么?

使用RestTemplate的spring webservices的超时配置

我想在客户端配置使用RestTemplate的spring webservices的超时。 我尝试了以下配置: 但是当我启动tomcat时,我有一个NoClassDefFoundError: 06 févr. 2012 10:43:43,113 [ERROR,ContextLoader] Context initialization failed java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethodBase 但是我在我的pom.xml中包含了commons-httpclient: commons-httpclient commons-httpclient 3.1 </dependency 知道如何做/解决这个问题吗? 提前致谢 !

wsimport两个声明导致冲突

我想在https://api.sendwordnow.com/webservices/v3/users.svc?wsdl上使用wsimport。 这是我正在使用的wsimport。 wsimport -B-XautoNameResolution -d C:\temp -extension -J-Djavax.xml.accessExternalSchema=all -J-Djavax.xml.accessExternalDTD=all -keep -verbose -XadditionalHeaders -Xnocompile https://api.sendwordnow.com/webservices/v3/users.svc?wsdl 这是错误。 解析WSDL … [WARNING] unknown extensibility element or attribute “EndpointReference” (in namespace “http://www.w3.org/2005/08/addressing”) line 1 of https://api.sendwordnow.com/webservices/v3/users.svc?wsdl [ERROR] Two declarations cause a collision in the ObjectFactory class. line 1 of https://api.sendwordnow.com/webservices/v3/Users.svc?xsd=xsd3 [ERROR] (Related to above error) This is the other declaration. […]