我正在使用Apache Tomcat v6服务器.在创建新的Web Service时,我获得了"Apache Axis","Apache Axis2"和"Apache CXF2.x"的Web服务运行时选项.
是否可以将运行时设置为"JAX-RPC"或"Jax-WS"?
编辑:
我正在使用Eclipse IDE
我不了解SoapUI和他的mockservice的行为.我正在使用SoapUI(testcase)的客户端和使用JAX-RPC的Java EE应用程序.
我的问题是:
当我试图从我的Java客户端或SoapUI的测试用例中调用任何web服务时,模拟服务在第一次调用时返回一条井消息,并在第二次调用时返回错误,同时使用相同的调用.但是如果我在等,它有效......
所以,我在SOAPui中启用了选项:" 在每个SOAP请求之后关闭HTTP连接 "并且它始终有效...
所以我的问题是:
" 这是模拟服务的正常行为,以及如何使用我的Java客户端实现它? "
谢谢你们.
 <soapenv:Fault>
         <faultcode>Server</faultcode>
         <faultstring>Missing operation for soapAction [] and body element [null] with SOAP Version [SOAP 1.1]</faultstring>
      </soapenv:Fault>
在使用JAX-RPC 1.1的Java EE 1.4中,我如何公开Web服务,因此wsdl有一个复杂的类型(person),其中person的一个属性是一个日期,它在WSDL/XSD中显示为只有一个日期(例如,生日)而不是WSDL/XSD中的dateTime(不需要时间)?
我想在wsdl中引用的xsd
<xs:element name="birthdate" type="xs:date"/>
代替
<xs:element name="birthdate" type="xs:dateTime"/>
java.util.Calendar和java.util.Date似乎都导致xsd数据类型在wsdl/xsd中呈现时为dateTime.
我知道java EE 1.4没有像java EE 5这样的注释,但有没有办法告诉Web服务使用xs:date数据类型?
我们目前使用以下URL公开了JAX-RPC Web服务
HTTP://xx.xx.xx.xx/myservice/MYGatewaySoapHttpPort WSDL
我们通过从上面的WSDL生成WebService,将webservice迁移到JAX-WS
但是可以从以下URL访问新的Web服务
HTTP://xx.xx.xx.xx/myservice/MYGateway WSDL
我如何能够通过首先提到的相同URL访问我的JAX-WS Web服务?这样我们的客户就没有任何问题.
更新:
我创建的WSDL的服务元素是按照期望的
<WL5G3N0:service name="MyGateway">
    <WL5G3N0:port binding="WL5G3N2:MyGatewaySoapHttp" name="MyGatewaySoapHttpPort">
      <WL5G3N3:address location="http://xx.xx.xx/myservice/MyGatewaySoapHttpPort"/>
    </WL5G3N0:port>
  </WL5G3N0:service>
但是JAX-WS的WSDL不同,并且这个WSDL是自动生成的.
<WL5G3N0:service name="MyGateway">
- <WL5G3N0:port binding="WL5G3N2:MyGatewaySoapHttp" name="MyGatewaySoapHttpPort">
  <WL5G3N3:address location="http://xx.xx.xx/myservice/MyGateway" /> 
  </WL5G3N0:port>
 </WL5G3N0:service
我使用Oracle Eclipse Indigo创建了webservice.
我能改变任何注释吗?
问候,
我有 WSDL(我从外部供应商那里得到的)。有这样几行:
  <xsd:complexType name="SalesRequest">
                <xsd:all>
                    <xsd:element name="merchantid" type="xsd:int"/>
                    <xsd:element name="password" type="xsd:string"/>
                    ...
                </xsd:all>
  </xsd:complexType>
  ... 
  <message name="SalesResponse">
        <part name="request" type="tns:SalesResponse"/>
  </message>
  ..
  <portType name="InterfacePortType">
    <operation name="Sales">
        <documentation>some text</documentation>
        <input message="tns:SalesRequest"/>
        <output message="tns:SalesResponse"/>
  </operation>
我已经基于这个 WSDL(使用 JAX-RPC)生成了 Java 类。
然后我创建了 Axis 服务(MyService 实现了 InterfacePortType)。
我准备了 XSDD 文件,将 MyService 部署到 Web 应用程序。
所以,然后我调用我的 MySerive 方法之一并在服务器端响应序列化的那一刻得到这个错误:
意外元素名称:预期 = 请求,实际 = SalesReturn
这意味着我的 XSDL 和 XSDD 并没有太多其他的东西。MyService 准备了这样的响应(但计数不通过网络发送):
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope 
...
<SalesReturn href="#id0"/></ns1:SalesResponse><multiRef xmlns:ns2=
...
</soapenv:Envelope>
问题是:我应该如何处理 WSDD 以便在来自服务的响应 XML 中使用“请求”而不是 …
我目前正在尝试从 Java 8 项目迁移到 Java 12。(希望如此)最后一个障碍是我们被迫使用的旧 WebService。在 Java 8 中“按原样”使用 WebService 本身不是问题,它已经工作了很多年。
wsdl 指出:
<!--由Apache Axis 创建的WSDL 版本:1.4
建立于 2006 年 4 月 22 日 -->
据我所知,新版本的 WSDL2JAVA 不再支持这种类型的服务(因为它们依赖于 Axis 2):
WSDLToJava 错误:CXF 不支持 Rpc/编码的 wsdls
为了使此服务可用(使用 Java 8和12),我需要以下库:
<!-- https://mvnrepository.com/artifact/javax.xml.rpc/javax.xml.rpc-api -->
<dependency>
    <groupId>javax.xml.rpc</groupId>
    <artifactId>javax.xml.rpc-api</artifactId>
    <version>1.1.2</version>
</dependency>
这就是问题发生的地方。该库定义了部分包javax.xml,由于它是 Java 系统路径,因此不再允许使用。任何建议或解决方法?我忽略了什么吗?
编辑: ZhekaKozlov 关于不得不切换到雅加达是正确的。现在还剩下一个错误,因为Axis2,项目中也是需要的。
<!-- https://mvnrepository.com/artifact/org.apache.axis2/axis2-kernel -->
<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-kernel</artifactId>
    <version>1.7.9</version>
</dependency>
将它添加到一个新的 Java 12 项目会使org.w3c.dom.*(例如 Document)无法使用。
EDIT2:我终于让一切正常。程序正在运行,代码中没有错误。不幸的是,我无法测试应用程序的 Axis 部分,因为它所连接的服务只能在我们客户端的环境中使用,因此必须对其进行测试。在axis2和axis2-adb上,我不得不排除两个库:
<exclusions>
    <exclusion>
        <groupId>org.apache.geronimo.specs</groupId> …我是否可以使用JAX-WS(wsimport)生成的客户端存根连接到JAX-RPC Web服务?使用JAX-WS客户端使用JAX-RPC Web服务有什么影响?有什么优点和缺点吗?
我想知道Apache CXF是否支持基于JAX-RPC的Web服务.目前我已经开发了基于JAX-WAS的一个.
谢谢.
我对 Spring Integration 有一些疑问:
我们可以使用 Spring Integration 框架集成两个以上的应用程序吗?
是点对点集成还是面向中间件的集成?
在客户端 - 服务器架构中如果(客户端和服务器)都是基于 Java 的应用程序,那么我们应该使用什么进行同步通信?意味着,我们应该选择 Spring Integration 还是 JAX-RPC?对于同步通信,哪一个会更快?
我创建了一个名为SOAPHeaderHandler的GenericHandler扩展.我将log4j语句放在处理程序中,可以看到正在构建的构造函数.但是,当我生成SOAP消息时,我没有看到与handleRequest方法相关的消息.我在存根中注册了Handler,如下所示:
if (service == null) {
    super.service = new com.ibm.ws.webservices.engine.client.Service();
}
else {
    super.service = service;
}
List handlerInfoList = new ArrayList();
QName[] headersArr = null;
HandlerInfo handlerInfo = new HandlerInfo(com.xxxxxx.hdhp.business.debitcard.cardservices.CardServiceSOAPHeaderHandler.class, 
     null, headersArr);
handlerInfoList.add(handlerInfo);
service.getHandlerRegistry().setHandlerChain(new QName("MetavanteDebitCard"), handlerInfoList);
处理程序是:
public class AccountManagementSOAPHeaderHandler extends GenericHandler {
 private static Logger logger = Logger.getLogger  (AccountManagementSOAPHeaderHandler.class);
 private HandlerInfo handlerInfo = null;
public AccountManagementSOAPHeaderHandler () {
 logger.info("Constructing AccountManagementSOAPHeaderHandler");
}
 /* (non-Javadoc)
  * @see javax.xml.rpc.handler.GenericHandler#getHeaders()
  */
 public QName[] getHeaders() {
 logger.info("calling getHeaders()");
  return null;
 }
 public boolean …