这是我的一部分pom.xml:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
<scope>runtime</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用Apache CXF作为JAX-WS的实现.一切正常(Java代码是通过WSDL生成的org.apache.cxf:cxf-codegen-plugin:2.4.0),直到执行:
java.lang.NoSuchMethodError:
javax.wsdl.xml.WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition;
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:237)
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:186)
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:91)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:203)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:90)
at javax.xml.ws.Service.<init>(Service.java:56)
....
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我错过了什么依赖?
您好我已经使用JAX-WS进行基于SOAP的Web服务.现在我想使用REST,因为REST比我从这里研究的那样优于SOAP .
但是从不同的文章我知道我们也可以从JAX-WS创建RESTful Web服务.但大多数人都说我们应该使用JAX-RS而不是JAX-WS.
我的问题是JAX-WS RESTful webservice和JAX-RS(jersey)之间有什么区别.JAX-RS优于JAX-WS有什么优势?为什么我们应该将JAX-RS用于RESTful Web服务?
提前致谢.
我是JAX-WS的新手,有一件事我不明白.
有很多关于如何设置JAX-WS安全性的教程,但几乎所有情况下BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY都存储在一些.xml文件中(取决于我认为的容器) - 它们是"硬编码的"那是.这就是我没有得到的.如何通过将BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY与数据库中的用户名和密码进行比较来验证Web服务客户端?我尝试在客户端设置BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY,如下所示:
ShopingCartService scs = new ShopingCartService(wsdlURL, name);
ShopingCart sc = scs.getShopingCartPort();
Map<String, Object> requestContext = ((BindingProvider)sc).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, userName);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, password);
sc.someFunctionCall();
Run Code Online (Sandbox Code Playgroud)
然后,在服务器端检索如下:
@Resource
WebServiceContext wsContext;
@WebMethod
public void someFunctionCall() {
MessageContext mc = wsContext.getMessageContext();
mc.get(BindingProvider.USERNAME_PROPERTY);
mc.get(BindingProvider.PASSWORD_PROPERTY);
}
Run Code Online (Sandbox Code Playgroud)
但我总是得到null,我没有在xml中设置任何东西,web服务工作得很好,除了我不能得到那些变量:(
我在java 1.6,tomcat 6和JAX-WS上运行.
任何有关使用数据库中的密码验证用户的帮助都非常感谢,谢谢.
我写了2个webservices,一个使用Jax-WS,另一个使用Jax-RPC.他们只返回一个字符串.
我用jMeter对它进行了压力测试,奇怪的是,因此Jax-RPC的速度要快一些.
在性能方面(响应时间,CPU时间,堆),我何时真正从Jax-WS中获利?我该如何证明呢?
谢谢你的时间!=)
问题:
我想实现一组Web服务,以保护SAML.我需要对用户进行身份验证,还需要根据用户角色进行授权.我发现了一些与此类似的问题,但没有一个问题得到满意答案.
场景:
我需要的主要功能:
问题:
我研究了一些SAML(SSO)解决方案(例如Shibboleth,opemAM,JOSSO ......);
谢谢!
以下是我发现的一些结果,和/或答案中的一些提示:
Shibboleth的:
http://shibboleth.1660669.n2.nabble.com/Web-Service-End-to-End-Security-td5526934.html
Shiboleth并不是点到点,只是点到点.
http://www.predic8.com/shibboleth-web-services-sso-en.htm
在SP之前需要代理模块进行身份验证.
OpenAM:
WSO2:
还在搜索,请贡献!!
我想编写一个JAX-WS Web服务,使用http://www.w3.org/TR/xmldsig-core/建议来签署我的SOAP消息.
通过我在互联网上找到的东西,我写了一个JAX-WS处理程序(SOAPHandler<SOAPMessageContext>),它设法改变SOAP请求的副本:
@Override
public boolean handleMessage(SOAPMessageContext smc) {
Boolean outboundProperty = (Boolean) smc.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
SOAPMessage message = smc.getMessage();
if (outboundProperty) {
try {
SOAPPart soapPart = message.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
Source source = soapPart.getContent();
Node root = null;
Document doc22 = null;
if (source instanceof DOMSource) {
root = ((DOMSource) source).getNode();
} else if (source instanceof SAXSource) {
InputSource inSource = ((SAXSource) source).getInputSource();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = null;
db = dbf.newDocumentBuilder(); …Run Code Online (Sandbox Code Playgroud) 我必须通过jax-ws公开ejb服务层.
我使用jax-ws和wsimport生成了web服务但是我被一些奇怪的东西拦住了; 日期被映射到XmlGregorianCalendar.是否可以使用经典的Java Date?你能告诉我正确的方法吗?
谢谢 .编辑:这是我使用的绑定文件:谢谢,我稍微修改了你的xml并将它与netbeans一起附加到客户端的webservice并且它工作正常.我使用的绑定:
<jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" wsdlLocation="../wsdl/localhost_8080/web_test/Testor.wsdl" >
<jaxb:globalBindings>
<jaxb:javaType name="java.util.Date"
xmlType="xsd:dateTime"
parseMethod="lol.XsdDateTimeConverter.unmarshal"
printMethod="lol.XsdDateTimeConverter.marshalDateTime"
/><jaxb:javaType
name="java.util.Date"
xmlType="xsd:date"
parseMethod="lol.XsdDateTimeConverter.unmarshal"
printMethod="lol.XsdDateTimeConverter.marshalDate"
/>
</jaxb:globalBindings>
</jaxws:bindings>
Run Code Online (Sandbox Code Playgroud) 我对Web服务,JAX-WS等都很陌生,所以也许没有问题......
所以,我想实现一个Web服务来使两个系统进行通信."客户端"系统对在"服务器"系统上生成的事件感兴趣.但"客户端系统"本身就是不同应用程序的服务器.服务器是Java(tomcat中的WAR).客户端是.Net.
应该只有一个客户端系统,但客户端系统中有几个客户端进程,每个客户端进程都对不同类别的事件感兴趣.
我将实现服务器端和测试客户端.其他人将实现.Net代码.
运行顺序应该沿着这一行:
首先,这听起来像是可行的吗?
是否有一个标准的内置机制,使用SOAP(服务器上的JAX-WS,客户端的.Net可用的任何东西) - 服务器可以用来从客户端获取回调端点?
例如,我使用RMI做了一些非常相似的事情,在这种情况下,客户端可以只向自己发送远程引用,服务器可以稍后存储ant引用.
最后,是否有一个标准库来存储端点引用,make(集体)回调,并且可能使列表保持最新,删除那些没有响应的客户端,以便进行一些"ping"调用?
为清楚起见,注意:我需要的不仅仅是带回调的异步方法:来自客户端的一条消息将从服务器到客户端生成许多回调消息.
我的Web服务客户端应用程序使用Apache CXF生成客户端存根以与多个Web服务进行通信.生成的CXF Web服务存根对象具有相当大的内存占用(10 - 15个Web服务对象占用超过64 MB的内存).有没有办法减少CXF对象的占用空间?
如果在多个Web服务中使用了相当大的模式,那么我想将XSD编译与WSDL编译分开.在一个简化的示例中,单步编译的工作原理如下:
$ wsimport -verbose service.wsdl
parsing WSDL...
Generating code...
org/example/wsdl/mysvc/MySvcPortType.java
org/example/wsdl/mysvc/MySvcService.java
org/example/ns1/Element1.java
org/example/ns1/ObjectFactory.java
org/example/ns1/package-info.java
...
Run Code Online (Sandbox Code Playgroud)
编译xsd并使用生成的剧集文件不起作用:
$ wsimport -b schema3.episode service.wsdl
parsing WSDL...
[ERROR] Schema descriptor {http://www.example.org/ns1}element1 in
message part "part1" is not defined and could not be bound to Java.
Perhaps the schema descriptor {http://www.example.org/ns1}element1 is
not defined in the schema imported/included in the WSDL. You can
either add such imports/includes or run wsimport and provide the
schema location using -b switch. line 9 of
file:...jaxepisode_element/service.wsdl
Run Code Online (Sandbox Code Playgroud)
那么如何在wsimport中使用预编译的模式呢?
附录:当包含在另一个模式中时使用该剧集并避免新的编译(d3.jar包含来自schema3 + …