Java具有格式字符串的概念,与其他语言中的字符串格式非常相似.它用于JDK方法,如String#format()
输出转换.
我想知道在Java中是否有类似于C的scanf
输入转换方法?
我正在使用Maven2创建一个使用多个Web服务的客户端.我仅限于使用Axis2
或支持Apache HttpClient
作为HTTP管道的其他框架,因为这些服务需要与基于托管证书解决方案的集成集成HttpClient
.
我熟悉CXF的代码生成Maven插件,允许在代码生成期间输入多个WSDL.但是,Axis2代码生成插件一次只能处理一个WSDL.
如何wsdl2code
在代码生成阶段为每个WSDL 运行Maven ?我需要多个配置文件吗?
POM的构建部分如下所示:
<build>
<plugins>
<plugin>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-wsdl2code-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<goals>
<goal>wsdl2code</goal>
</goals>
</execution>
</executions>
<configuration>
<unpackClasses>true</unpackClasses>
<databindingName>adb</databindingName>
<packageName>org.example.stackoverflow.axis2-maven</packageName>
<!-- only one of these actually gets used by code generator -->
<wsdlFile>src/main/resources/service1.wsdl</wsdlFile>
<wsdlFile>src/main/resources/service2.wsdl</wsdlFile>
<outputDirectory>target/generated-sources</outputDirectory>
<syncMode>sync</syncMode>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
我是JAXB的新手,想知道是否有一种方法可以将XML解组为我的响应对象但使用xpath表达式.问题是我打电话给第三方网络服务,我收到的回复有很多细节.我不希望将XML中的所有细节映射到我的响应对象.我只希望从xml中映射一些细节,使用特定的XPath表达式将其映射到我的响应对象.是否有注释可以帮助我实现这一目标?
例如,考虑以下响应
<root>
<record>
<id>1</id>
<name>Ian</name>
<AddressDetails>
<street> M G Road </street>
</AddressDetails>
</record>
</root>
Run Code Online (Sandbox Code Playgroud)
我只对检索街道名称感兴趣所以我想使用xpath表达式使用'root/record/AddressDetails/street'获取street的值并将其映射到我的响应对象
public class Response{
// How do i map this in jaxb, I do not wish to map record,id or name elements
String street;
//getter and setters
....
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个简单的服务,用JAX-RS注释注释并包含@Produces("application/json")
注释.我在注册服务时设置了以下属性(我正在使用DS,但这不重要):
service.exported.interfaces -> *
service.exported.configs -> org.apache.cxf.rs
org.apache.cxf.rs.address -> myURI
Run Code Online (Sandbox Code Playgroud)
当我运行我的应用程序时,我可以点击URL,但我的浏览器返回:
No message body writer has been found for response class MyClass.
Run Code Online (Sandbox Code Playgroud)
我的OSGi控制台显示:
Jan 11, 2012 2:29:48 PM org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor writeResponseErrorMessage
WARNING: No message body writer has been found for response class MyClass.
Run Code Online (Sandbox Code Playgroud)
我阅读了文档并想到可能需要注册JSON提供程序.在May Activator中我添加了:
bundleContext.registerService(new String[] { "javax.ws.rs.ext.MessageBodyReader",
"javax.ws.rs.ext.MessageBodyWriter" },
new org.apache.cxf.jaxrs.provider.JSONProvider(), null);
Run Code Online (Sandbox Code Playgroud)
但这没有任何区别.
如何修复"没有为响应类MyClass找到消息正文编写器".错误信息?