使用glassfish n wso2esb找不到Operation的端点引用(EPR)

时间:2014-07-20 16:19:29

标签: soap wsdl wso2 wso2esb esb

我是wso2 esb的新手。 我正在尝试一个简单的Web服务程序。

package testmart;

import javax.jws.WebService;

@WebService 
public class testone {

   public String testMethod()
    {
        return "success";
    }
}

我正在使用glassfish服务器,通过提供以下详细信息在wso2 esb上创建了一个代理:

网络服务网址:http://localhost:8080/testmart/testoneService

wsdl url:http://localhost:8080/testmart/testoneService?wsdl

创建成功"成功"味精。但是当我测试它时,会出现以下错误:

<soapenv:Fault xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:axis2ns7="http://www.w3.org/2003/05/soap-envelope">

   <soapenv:Code>
     <soapenv:Value>axis2ns7:Client</soapenv:Value>

   </soapenv:Code>
   <soapenv:Reason>
      <soapenv:Text xml:lang="en-US" xmlns:xml="http://www.w3.org/XML/1998/namespace">
 The endpoint reference (EPR) for the Operation not found is         /services/testmart1.testmart1HttpSoap12Endpoint and the WSA Action = null. If this EPR was previously reachable, please contact the server administrator.
 </soapenv:Text>
   </soapenv:Reason>
   <soapenv:Detail/>
  </soapenv:Fault>

以下是我的esb源代码视图代码:

<?xml version="1.0" encoding="UTF-8"?>

 <definitions xmlns="http://ws.apache.org/ns/synapse">
   <registry provider="org.wso2.carbon.mediation.registry.WSO2Registry">
      <parameter name="cachableDuration">15000</parameter>
   </registry>
   <proxy name="testmart1"
        transports="https http local"
      startOnLoad="true"
      trace="disable">
  <description/>
  <target>
     <endpoint>
        <address uri="http://localhost:8080/testmart/testoneService"/>
     </endpoint>
     <outSequence>
        <send/>
     </outSequence>
  </target>
  <publishWSDL uri="http://localhost:8080/testmart/testoneService?wsdl"/>
   </proxy>
   <sequence name="fault">
     <log level="full">
     <property name="MESSAGE" value="Executing default 'fault' sequence"/>
     <property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
     <property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
  </log>
  <drop/>
   </sequence>
   <sequence name="main">
       <in>
        <log level="full"/>
        <filter source="get-property('To')" regex="http://localhost:9000.*">
           <send/>
        </filter>
      </in>
     <out>
        <send/>
     </out>
     <description>The main sequence for the message mediation</description>
   </sequence>
</definitions>

我阅读了有关此错误的所有帖子,但无法解决此问题。 任何形式的帮助都将受到高度赞赏,因为这是我尝试过的第一个例子。 提前谢谢。

4 个答案:

答案 0 :(得分:1)

发送请求时检查是否设置了SOAPAction。如果没有,您可以通过两种方式指定它:

  1. ESB级别
  2. 在发送中介之前设置属性

    <property name="SOAPAction" value="urn:SOAPAction" scope="transport"/>
    
    1. 客户级
    2. 您可以在客户端代码中指定SOAPAction。在选项中指定它,如下所示。

      options.setAction("urn:SOAPAction");
      

答案 1 :(得分:1)

来自WSO2 ESB的网页界面中的

点击&#34;来源视图&#34;对于你的代理并把这行:

  ...
   <parameter name="serviceType">proxy</parameter>
   <parameter name="disableOperationValidation">true</parameter>
  ...
标签前的

<description/>

答案 2 :(得分:0)

您正在使用Wso2ESB,因此您必须指定如下:

@WebMethod(action =“testMethod”,operationName =“testMethod”) public String testMethod()

上述注释必须在Web服务实现类中使用。

答案 3 :(得分:0)

在Websphere Application Server上,在相同的情况下,它有助于在服务器停止时删除Temp文件夹。