标签: cxf

CXF 不生成枚举映射吗?

我正在使用CXF(wsdl2java)wsdl文件生成类,但一个枚举被映射到Stringonly。

如果我打开生成的类,这是 wsdl 片段:

 <complexType>
    <complexContent>
      <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
        <attribute name="Type" use="required">
          <simpleType>
            <restriction base="{http://www.w3.org/2001/XMLSchema}string">
              <enumeration value="AAA"/>
              <enumeration value="VVV"/>
            </restriction>
          </simpleType>
        </attribute>
      </restriction>
    </complexContent>
  </complexType>
Run Code Online (Sandbox Code Playgroud)

为什么结果是 aString而不是 an Enum?这是自动生成的结果:

private String type;

public String getType() {
    return type;
}

public void setType(String value) {
    this.type = value;
}
Run Code Online (Sandbox Code Playgroud)

更新:自定义绑定文件:

<jaxb:bindings    
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    jaxb:version="2.1">


         <jaxb:bindings>
                <jaxb:bindings node="//xs:attribute[@name='Type']/xs:simpleType">
                 <jaxb:typesafeEnumClass ref="TestEnum" />
        </jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>
Run Code Online (Sandbox Code Playgroud)

java enums wsdl web-services cxf

2
推荐指数
1
解决办法
4168
查看次数

如何使用 JPA 持久保存 XMLGregorianCalendar?

这就是我所拥有的:

@XmlSchemaType(name = "dateTime")
@Column(name = "expiry-date", nullable = false)
protected XMLGregorianCalendar expiryDate;
Run Code Online (Sandbox Code Playgroud)

抛出以下异常:

org.hibernate.MappingException: Could not determine type for: javax.xml.datatype.XMLGregorianCalendar
Run Code Online (Sandbox Code Playgroud)

谢谢

soap hibernate cxf

2
推荐指数
1
解决办法
3234
查看次数

org.apache.cxf.ws.policy.PolicyException:无法满足任何策略选择

我想用 JUnit 和 Apache CXF 编写一个简单的集成测试来测试一些支持 WS-Security 的服务。当我尝试运行我的代码时:

MyService myService = new myWsService(MY_SERVICE_WSDL).getMyWs()
Client client = ClientProxy.getClient(myService);
Map<String, Object> ctx = ((BindingProvider) myService).getRequestContext();
ctx.put("ws-security.callback-handler", new KeystorePasswordCallback());
ctx.put("ws-security.signature.crypto", new MyMerlinImpl());
Run Code Online (Sandbox Code Playgroud)

MyMerlinImpl 只是在重写loadProperties方法中传递所需的 Merln.* 属性值,

我得到:

sie 12, 2015 11:52:10 AM org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl handleNoRegisteredBuilder
WARNING: No assertion builder for type {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}AsymmetricBinding registered.
sie 12, 2015 11:52:10 AM org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl handleNoRegisteredBuilder
WARNING: No assertion builder for type {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}InitiatorToken registered.
sie 12, 2015 11:52:10 AM org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl handleNoRegisteredBuilder
WARNING: No assertion builder for type {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}X509Token …
Run Code Online (Sandbox Code Playgroud)

java ws-security integration-testing web-services cxf

2
推荐指数
1
解决办法
1万
查看次数

引起:java.lang.NoClassDefFoundError:org/apache/cxf/ws/policy/builder/jaxb/JaxbAssertionBuilder

I am migrating my application from jboss-eap-5.1 to jboss-eap-6.4.0. My application is using spring 3.1.1 related jar and apache-cxf-2.7.7 jars. 

Ear file structure is as below 
EAR/lib - contains all the jar which is common for wars.
app1.war/lib - contains jars required for it
app2.war/lib - contains jars required for it


I have also excluded modules for webservice, org.jboss.as.jaxrs & ejb3 from  standalong.xml config file.  


Spring jars :
spring-orm-3.1.1.RELEASE.jar
spring-aop-3.1.1.RELEASE.jar                spring-oxm-3.2.4.RELEASE.jar
spring-asm-3.1.1.RELEASE.jar                spring-test-3.2.4.RELEASE.jar
spring-beans-3.1.1.RELEASE.jar              spring-tx-3.1.1.RELEASE.jar
spring-context-3.1.1.RELEASE.jar            spring-web-3.2.4.RELEASE.jar
spring-core-3.1.1.RELEASE.jar               spring-webmvc-3.2.4.RELEASE.jar
spring-data-commons-core-1.1.0.RELEASE.jar …
Run Code Online (Sandbox Code Playgroud)

java spring cxf jboss-eap-6

2
推荐指数
1
解决办法
8907
查看次数

(spring-boot、cxf、tomcat)内容长度与传输编码:分块?

我正在尝试重新解决一个问题。http 响应标头:Transfer-Encoding: chunked

我们在 spring-boot + 嵌入式 tomcat 中有一个 CXF-SOAP Web 服务。

SOAP 响应有一个Content-Length标头,但没有Transfer-Encoding……我猜这很正常?

不幸的是,我们有一些遗留的客户端黑客,它们似乎只适用Transfer-Encoding: chunkedContent-Length.

有没有办法强制服务器应用程序响应Transfer-Encoding: chunked

到底是什么决定了生成哪种响应格式?

它可以以某种方式配置吗?

tomcat soap cxf transfer-encoding spring-boot

2
推荐指数
1
解决办法
3055
查看次数

使用 CXF 作为实现来限制 JAX-RS 查询参数的值

我有一个用例,我需要限制可以作为查询参数传递的值。

\n\n
@Path("/foo")\npublic interface Foo {\n\n    @GET\n    @Path("/details/id/{id}")\n    void getFooDetails(@PathParam("id") String id, @QueryParam("sort") String sortDirection);\n}\n\npublic class FooImpl {\n    public void getFooDetails(String id, String sortDir) {\n        //Implementation\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在上面的示例中,我想限制sort可以通过 API 传递到ASC, DESC.

\n\n

是否有任何现有的 CXF 注释可以用来限制参数的值?我还没有找到任何解决方案,所以我尝试了以下解决方案。

\n\n

我的方法:

\n\n
@Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})\n@Retention(RetentionPolicy.RUNTIME)\n@Inherited\npublic @interface ValueSet {\n\n    String[] allowedValues();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

修改后的界面如下所示。

\n\n
@Path("/foo")\npublic interface Foo {\n\n    @GET\n    @PathParam("/details/id/{id}")\n    void getFooDetails(@PathParam("id") String id, @QueryParam("sort") @ValueSet(allowedValues = {"ASC", "DESC"}) String sortDirection);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我编写了一个 CXF 拦截器来拦截 API 调用。我使用反射来处理参数FooImpl.getFooDetails。但我面临的问题是,拦截器查看 FooImpl.getFooDetails …

java rest spring cxf jax-rs

2
推荐指数
1
解决办法
3011
查看次数

如何在Springboot 2.1.1 Final中配置CXF servlet?

请找到我面临的错误:在 springboot 2.1.1 中,我遇到以下错误:


应用程序无法启动


描述:org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration 中构造函数的参数 1 需要类型为“org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath”的 bean,但无法找到。找到了以下候选,但无法注入: - 'DispatcherServletAutoConfiguration.DispatcherServletRegistrationConfiguration' 中的 Bean 方法 'dispatcherServletRegistration' 未加载,因为 DispatcherServlet Registration 发现非调度程序 Servlet DispatcherServlet

行动:

考虑重新访问上面的条目或在配置中定义“org.springframework.boot.autoconfigure.web.servlet.DispatcherServletPath”类型的 bean。

我的配置:

@Configuration
public class CXFConfig {

    @Bean
    public ServletRegistrationBean dispatcherServlet() {

        final ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new CXFCdiServlet(), "/services/*");
        servletRegistrationBean.setLoadOnStartup(1);
        return servletRegistrationBean;
    }

    @Bean(name = Bus.DEFAULT_BUS_ID)
    public SpringBus springBus() {
        SpringBus springBus = new SpringBus();
        springBus.getInInterceptors().add(new AppInboundInterceptor());
        springBus.getOutInterceptors().add(new AppOutboundInterceptor());
        return springBus;
    }

}
Run Code Online (Sandbox Code Playgroud)

请确认如何配置?

dispatcherServlet()方法不适用于Springboot 2.1.1

apache soap cxf

2
推荐指数
1
解决办法
2711
查看次数

如何修复 java.lang.InknownClassChangeError:使用 cxf 实现类

我们在运行 openjdk 版本“1.8.0_201”的 RedHat linux 环境中的 tomcat 8 上进行 SOAP 客户端调用时遇到问题,而在 Windows 计算机(tomcat 8、Oracle java 8)上使用类似的配置进行相同的调用则可以正常工作,并且AIX(Oracle java 8、tomcat 7)。

这是堆栈跟踪:

java.lang.IncompatibleClassChangeError: Implementing class
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2401)
        at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:859)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1185)
        at org.apache.cxf.ws.addressing.impl.AddressingFeatureApplier.initializeProvider(AddressingFeatureApplier.java:36)
        at org.apache.cxf.ws.addressing.WSAddressingFeature.initializeProvider(WSAddressingFeature.java:46)
        at org.apache.cxf.feature.AbstractFeature.initialize(AbstractFeature.java:49)
        at org.apache.cxf.frontend.ClientFactoryBean.applyFeatures(ClientFactoryBean.java:112)
        at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:100)
        at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:157)
        at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142)
        at org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:476)
        at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:343)
        at javax.xml.ws.Service.getPort(Service.java:160)
Run Code Online (Sandbox Code Playgroud)

使用cxf版本2.7.18

pom.xml 片段

      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>${cxf.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-rs-client</artifactId>
        <version>3.0.16</version> …
Run Code Online (Sandbox Code Playgroud)

java cxf

2
推荐指数
1
解决办法
2万
查看次数

在 Java 中生成有效的 ES256 签名

我正在尝试集成需要 URL 中的签名查询参数的 Apple Map Web Snapshot。我能够在 NPM 的 JWA 包中成功生成和验证 ES256 签名,但不能在 Java 中生成和验证。请帮助我找到等效的库以生成有效的签名,我在 Java 中尝试了几个 JWA 库。

// Required modules.
const { readFileSync } = require("fs");
const { sign } = require("jwa")("ES256");

/* Read your private key from the file system. (Never add your private key
 * in code or in source control. Always keep it secure.)
 */ 
const privateKey = readFileSync("[file_system_path]");
// Replace the team ID and key ID values with your actual values.
const teamId = …
Run Code Online (Sandbox Code Playgroud)

java cryptography cxf mapkit jwt

2
推荐指数
1
解决办法
2697
查看次数

如何为抢占式HTTP身份验证配置CXF生成的客户端?

我有一个由CXF使用本地wsdl文件生成的客户端.客户端连接正常,我从Web服务器收到预期的401错误.

我遇到的问题是无法在客户端中正确配置抢占式身份验证.

我尝试过很多东西都无济于事.Web上的大多数示例似乎都集中在Spring上,而不是简单的旧Java方法.

我包括客户的主要部分.如果有人能给我一个如何配置它的例子,我会很感激.请注意,我不是在寻找任何花哨的东西.我只需要能够验证并调用服务.

public final class ServiceNowSoap_ServiceNowSoap_Client {

private static final QName SERVICE_NAME = new QName(
        "http://www.service-now.com/foo",
        "ServiceNow_foo");

private ServiceNowSoap_ServiceNowSoap_Client() {
}

public static void main(String args[]) throws java.lang.Exception {
    URL wsdlURL = ServiceNowCmdbCiComm.WSDL_LOCATION;
    if (args.length > 0 && args[0] != null && !"".equals(args[0])) {
        File wsdlFile = new File(args[0]);
        try {
            if (wsdlFile.exists()) {
                wsdlURL = wsdlFile.toURI().toURL();
            } else {
                wsdlURL = new URL(args[0]);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }

    ServiceNowFoo ss = new ServiceNowFoo(wsdlURL, …
Run Code Online (Sandbox Code Playgroud)

java authentication soap cxf preemptive

1
推荐指数
1
解决办法
6361
查看次数