我已经开始使用Spring学习Apache CXF。首先,我尝试创建一个简单的客户端/服务器模型。
服务器端是: service.HelloWorld.java
@WebService
public interface HelloWorld {
String sayHi(String text);
}
service.HelloWorldImpl.java
@WebService(endpointInterface = "service.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String sayHi(String text) {
return "Hello, " + text;
}
}
客户端是: client.Client.java 公共类Client {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"cxf-client-servlet.xml"});
HelloWorld client = (HelloWorld) context.getBean("client");
System.out.println(client.sayHi("Batman"));
}
}
cxf-client-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schema/jaxws.xsd">
<bean id="client" class="service.HelloWorld" factory-bean="clientFactory" factory-method="create"/>
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="service.HelloWorld"/>
<property name="address" value="http://localhost:8080/services/HelloWorld"/>
</bean>
问题是:要使客户端正常工作,我必须向客户端的项目html" target="_blank">添加service.HelloWorld(包+接口)。我听说在使用服务之前,我需要生成一个存根。所以这让我感到困惑。因此,什么是正确的方法,什么是最佳实践(使用某些合同优先的方法或类似方法可能更好)?稍后,我想添加WS-
Security,所以我需要有很强的背景=)
提前致谢。
如果您要进行代码优先的WS开发,则可以分发接口并将其提供给客户端。
我相信
@WebService
在接口(仅实现)上不需要(?),因此客户端对此注释没有依赖性。
即使您正在执行代码优先的Web服务,您仍然可以下载Apache
CXF为您生成的WSDL文档,并将其提供给客户端。使用这种方法(被认为更成熟,更不用说可以在.NET等不同平台上使用了),客户端必须生成存根(使用像工具wsdl2java
)。该过程本质上将自动创建非常相似的客户端界面。
这就是为什么这么多人喜欢合同优先开发的原因之一-使用相同的WSDL生成客户端存根和服务器端WS实现。这限制了(偶然)不兼容的范围。
我正在学习Swagger以及如何使用Swagger代码生成REST客户端。我知道如何使用Swagger做文档,我也知道如何使用Swagger生成一个简单的REST服务器,但我不知道如何使用Swagger代码生成一个简单的REST客户端。 例如,我有一个简单的应用程序,它是一个REST服务器,我想生成REST客户端。我能用斯威格代码吗? REST服务器的控制器: 之后,我开发了一个简单的REST客户
我打算使用RingBuffer来创建一个非常简单的小型网络测试工具,叫做netclient。为此我需要向Makefile添加一些工具,来处理bin/目录下的小程序。 扩展Makefile 首先,为程序添加一些变量,就像单元测试的TESTS和TEST_SRC变量: PROGRAMS_SRC=$(wildcard bin/*.c) PROGRAMS=$(patsubst %.c,%,$(PROGRAM
问题内容: 我正在寻找Java的SOAP客户端。 Apache Axis在我看来非常肿。我不明白为什么Java必须如此复杂。例如,在PHP中,我要做的就是: 我的$ response对象保存了我需要的所有信息。 有人可以建议我如何在Java中实现类似这样的事情而不会太麻烦呢? 提前谢谢了, 〜编辑1〜 @jarnbjo: 这对我非常有用。我遇到的困难是,需要哪些导入才能使代码运行? 我运行了以下命
问题内容: Google的Chrome和IE等应用程序可以透明地处理Kerberos身份验证;但是我找不到适合这种透明度的“简单” Java解决方案。我发现的所有解决方案都需要存在一个krb5.conf文件和一个login.conf文件,以上应用似乎还需要这些文件。 用有效的Kerberos SSO功能构建Java应用程序的最佳方法是什么? [更新]:明确地说,我需要一个 CLIENT 端解决方案
问题 你想在分布式系统中实现一个简单的客户端连接认证功能,又不想像SSL那样的复杂。 解决方案 可以利用 hmac 模块实现一个连接握手,从而实现一个简单而高效的认证过程。下面是代码示例: import hmac import os def client_authenticate(connection, secret_key): ''' Authenticate client t
wex5是跨端移动开放框架,它与传统的前端页面开发最大的差异在于,采用了单页模式,实现了资源的不重复加载,那么如何做一个简单的门户页呢? 1.UI部分如图所示: 页面主要由contents以及其中一个content构成,content中放windowContainer组件,并在src属性中直接写入主页地址,这样有助于优化主页的打开速度。 2.创建shellImpl实例 index.w作为门户页面,