CXF服务端The prefix "jaxws" for element "jaxws:endpoint" is not bound.

本文介绍了一个使用Spring框架进行XML配置的例子。展示了如何通过引入不同的命名空间如JAX-WS, JAX-RS等来组织复杂的Spring Bean定义。这对于理解Spring IoC容器的工作原理以及如何在实际项目中应用这些配置非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决方案:修改beans.

 

<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
    xmlns:jaxws="http://cxf.apache.org/jaxws"  
    xmlns:jaxrs="http://cxf.apache.org/jaxrs
    xmlns:cxf="http://cxf.apache.org/core
    xmlns:util="http://www.springframework.org/schema/util
    xsi:schemaLocation="  
    http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd  
    http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans.xsd  
    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd  
    http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/util 
    http://www.springframework.org/schema/util/spring-util-3.0.xsd">

 

 

 

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.xml.ws.Endpoint]: Factory method 'endpoint' threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/cxf/frontend/ServerFactoryBean at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] ... 19 common frames omitted Caused by: java.lang.NoClassDefFoundError: org/apache/cxf/frontend/ServerFactoryBean at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_301] at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[na:1.8.0_301] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_301] at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) ~[na:1.8.0_301] at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[na:1.8.0_301] at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[na:1.8.0_301] at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[na:1.8.0_301] at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_301] at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[na:1.8.0_301] at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_301] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) ~[na:1.8.0_301] at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_301] at org.apache.cxf.jaxws.EndpointImpl.<init>(EndpointImpl.java:164) ~[cxf-rt-frontend-jaxws-3.4.4.jar:3.4.4] at org.apache.cxf.jaxws.EndpointImpl.<init>(EndpointImpl.java:157) ~[cxf-rt-frontend-jaxws-3.4.4.jar:3.4.4] at org.apache.cxf.jaxws.EndpointImpl.<init>(EndpointImpl.java:171) ~[cxf-rt-frontend-jaxws-3.4.4.jar:3.4.4] at org.apache.cxf.jaxws.EndpointImpl.<init>(EndpointImpl.java:178) ~[cxf-rt-frontend-jaxws-3.4.4.jar:3.4.4]
06-07
### 使用 JaxWsDynamicClientFactory 访问带有账号密码验证的 WebService 接口 为了通过 `JaxWsDynamicClientFactory` 来调用需要基本认证的 Web Service,可以按照如下方式操作: #### 创建动态客户端工厂实例 首先创建一个 `JaxWsDynamicClientFactory` 的单例对象来获取客户端。 ```java import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; public class Client { private static final JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); } ``` #### 设置HTTP Basic Auth认证信息 对于需要用户名和密码的身份验证场景,在发起请求前设置相应的属性到客户端配置中去[^1]。 ```java // 假设目标服务URL为 "http://example.com/service?wsdl" String wsdlUrl = "http://example.com/service?wsdl"; Object[] objects; try { // 获取client对象 Client client = dcf.createClient(wsdlUrl); // 配置HTTP BASIC AUTH Map<String, Object> outProps = new HashMap<>(); outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN); outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT); outProps.put(WSHandlerConstants.USER, "yourUsername"); outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, PasswordCallback.class.getName()); ((BindingProvider) client).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, wsdlUrl); ((BindingProvider) client).getRequestContext().put("password", "yourPassword"); } catch (Exception e) { System.out.println(e.getMessage()); } ``` 注意这里使用了 `PasswordCallback` 类来自定义处理密码回调逻辑。这通常是为了安全原因不直接暴露明文密码而设计的一种机制[^2]。 #### 调用远程方法并传递参数 最后一步就是实际执行对远端Web service的操作,并传入必要的输入参数。 ```java objects = client.invoke("operationName", param1, param2); for (Object obj : objects) { System.out.println(obj.toString()); } ``` 上述代码片段展示了如何利用 Apache CXF 提供的功能构建支持 HTTP basic auth 的 web services 客户端应用程序[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值