有什么区别:
这三个都可用于在Java中创建Web服务.
据我所知,JAX-WS是一个规范,Axis2和CXF是实现,但是如果我没有错,Java 1.6就会实现JAX-WS.
那么可以使用Java 1.6来开发JAX-WS Web服务而无需使用Axis2或CXF吗?那么Axis2,CXF的用途是什么?
我有第三方WSDL,我需要用Java编写代码,以便Web服务客户端调用第三方WSDL中的操作.现在,我使用Axis的WSDL2JAVA工具生成了客户端存根,并使用XMLbeans进行数据绑定.
wsimport
在另一种选择.优缺点都有什么?我最初使用了一些基本的东西.现在我有这些选择
C:\axis2-1.5.1\bin>wsdl2java -uri mywsdlurl -o client -p somepackage -d xmlbeans -s -t -ssi
Run Code Online (Sandbox Code Playgroud) 我遇到了以下错误:
http://issues.apache.org/jira/browse/AXIS2-4363
它陈述如下:
仅当org.apache.axiom的日志级别为DEBUG时才会出现此错误,因此解决方法是设置日志级别> DEBUG.
我的问题是如何做到这一点?我一直在搜索我的目录中的属性文件或其他东西,我一直在寻找是否有我可以在代码中设置的东西,但我真的不知道我在做什么.我现在正在桌面上运行一个控制台应用程序,同时试图让它工作.
更新1:我注意到我的Axis2目录在其根目录中有自己的log4j.properties文件.这是安全忽略还是解决方案的一部分(或问题的一部分)?
更新2:根目录log4j.properties文件显然未正确设置.现在它看起来像这样:
log4j.rootLogger=DEBUG, R
log4j.logger.org.apache.axiom=WARN
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
Run Code Online (Sandbox Code Playgroud)
但这显然是错误的,因为此代码返回"Log level is null":
System.out.println("Log level is " + logger.getLevel());
Run Code Online (Sandbox Code Playgroud)
现在我正在使用代码设置日志级别
Logger logger = Logger.getLogger("org.apache.axiom");
logger.setLevel(Level.WARN);
Run Code Online (Sandbox Code Playgroud) 我试图呼叫一个Web服务,但面临一个奇怪的行为.我们的服务器上运行了一个Web服务,但代码不对我们开放,因此无法看到墙后面发生了什么服务的所有者已经暴露了基于Web的测试客户端UI,它在文本框中输入并将显示对测试目的的响应.此输入框以下面提到的格式输入
<CONTENT>
<CONTENTID></CONTENTID>
<DOCUMENTID>DRI2</DOCUMENTID>
<LOCALECODE>en_US</LOCALECODE>
<LATEST_VERSION>false</LATEST_VERSION>
<INCREASEVIEWCOUNT>false</INCREASEVIEWCOUNT>
<ACTIVITY_TYPE></ACTIVITY_TYPE>
</CONTENT>
Run Code Online (Sandbox Code Playgroud)
它在这个用户界面上工作得很好,但是当我试图通过我的java代码调用这个Web服务时它连接以及获得服务授权但是当我试图调用上面的方法它给我以下错误消息
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXParseException: Content is not allowed in prolog.
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: Content is not allowed in prolog.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) …
Run Code Online (Sandbox Code Playgroud) 如果有人帮助我理解axis2 web服务和CXF Web服务之间的区别,我将不胜感激.
我想用Maven2 构建一个Axis2客户端(我只访问一个远程Web服务,我没有实现一个!),我不想在我的项目中添加21MB的JAR.当我用ADB转换WSDL时,我需要在我的pom.xml中编译代码?
在此之前,我想让您知道我已经可以连接到Web服务服务器了.我问这个问题是因为我希望深入了解wsimport生成的客户端是如何工作的.根据我的研究,wsimport使用JAXWS.请注意,我不了解JAXWS.
我使用wsimport生成了我的客户端.我使用的WSDL来自Axis2 Web服务,由Axis2自动生成.下面的类是wsimport的结果:
下 com.datamodel.xsd
DataBeanRequest.java
DataBeanResponse.java
ObjectFactory.java
package-info.java
下 com.service
MyWebService.java
MyWebServicePortType.java
MyMethod.java
MyMethodResponse.java
ObjectFactory.java
package-info.java
使用上面的类,我可以告诉它com.datamodel.xsd
包含Web服务服务器使用的bean(不包括ObjectFactory
和package-info
).同时,MyMethod
和MyMethodResponse
也用于设置的web服务方法/操作的请求和响应参数豆.
以下是我的问题:(如果你不知道我的一些问题的答案,你真的不必回答所有问题.:)请随时分享你认为我可能会觉得有用的任何信息.)
我是否正确
MyWebService
,它包含一个注释,指的是我用来生成客户端的WSDL的绝对位置.wsdllocation
在客户端中指定的相关性是什么?客户如何使用该信息?wsimport
命令有一个wsdllocation
属性,其中wsdllocation
可以指定值.)Tomcat v7.0 Server中的Apache Axis2 Web服务运行时不支持服务项目Test.为什么?请帮我
我的消息传递提供程序为我提供了两种不同的WSDL.
http://my.amazonaws.com:8000/webservice/?wsdl
http://my.amazonaws.com:8000/webservice/?singleWsdl
Run Code Online (Sandbox Code Playgroud)
第一个是嵌入式 WSDL.不能使用它来生成WSDL2java
包,也不能使用JAX-WS来创建连接.
第二个是单个 WSDL.它可以使用CXF 3.0的WSDL2java生成Java包,并可以使用JAX-WS创建连接.它工作得很好.
请告诉我这两种WSDL之间的区别.