从Web服务项目调用EJB方法

时间:2013-06-04 08:15:15

标签: web-services ejb myeclipse websphere-8

我有一个webservice项目(WebServiceProject2),我想在EJB项目中调用一个方法(BelsizeEJB)。

我已完成以下操作:Right-click WebServiceProject2 -> Build Path -> Configure Build Path -> Projects tab -> Add -> BelsizeEJB -> OK

BelsizeEJB项目中的Login.java

package com.belsize.module;

public class Login {

    public boolean loginuser(String User, String Password) {
        String LOC = "Login: loginUser";
        System.out.println(LOC);

        return true;
    }

}

WebServiceProject2中的Authenticate.java

package com.myeclipseide.ws;

import com.belsize.module.Login;

public class Authenticate {

    public boolean doLogin_loginAction(String User, String Password) {

        System.out.println("Testing Start");
        Login _l = new Login();
        System.out.println("Login Method Result:  " + _l.loginuser(User, Password));
        System.out.println("Testing End");
        return _l.loginuser(User, Password);

    }
}

完成上述操作后,我创建了一个新的Web服务并生成了wsdl,如下所示:

Authenticate.wsdl                                                                                                                                                                                                                                                                                                                              

   <wsdl:message name="doLogin_loginActionResponse">
     <wsdl:part element="impl:doLogin_loginActionResponse" name="parameters">
    </wsdl:part>

  </wsdl:message>

   <wsdl:message name="doLogin_loginActionRequest">
     <wsdl:part element="impl:doLogin_loginAction" name="parameters">
    </wsdl:part>

  </wsdl:message>

   <wsdl:message name="loginRequest">
     <wsdl:part element="impl:login" name="parameters">
    </wsdl:part>

  </wsdl:message>

   <wsdl:message name="loginResponse">
     <wsdl:part element="impl:loginResponse" name="parameters">
    </wsdl:part>

  </wsdl:message>

   <wsdl:portType name="Authenticate_SEI">
     <wsdl:operation name="login">
       <wsdl:input message="impl:loginRequest" name="loginRequest">
    </wsdl:input>

       <wsdl:output message="impl:loginResponse" name="loginResponse">
    </wsdl:output>

    </wsdl:operation>

     <wsdl:operation name="doLogin_loginAction">
       <wsdl:input message="impl:doLogin_loginActionRequest" name="doLogin_loginActionRequest">
    </wsdl:input>

       <wsdl:output message="impl:doLogin_loginActionResponse" name="doLogin_loginActionResponse">
    </wsdl:output>

    </wsdl:operation>

  </wsdl:portType>

   <wsdl:binding name="AuthenticateSoapBinding" type="impl:Authenticate_SEI">
 <wsaw:UsingAddressing xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" wsdl:required="false"/>

     <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

     <wsdl:operation name="login">
       <wsdlsoap:operation soapAction=""/>

       <wsdl:input name="loginRequest">
         <wsdlsoap:body use="literal"/>

      </wsdl:input>

       <wsdl:output name="loginResponse">
         <wsdlsoap:body use="literal"/>

      </wsdl:output>

    </wsdl:operation>

     <wsdl:operation name="doLogin_loginAction">
       <wsdlsoap:operation soapAction=""/>

       <wsdl:input name="doLogin_loginActionRequest">
         <wsdlsoap:body use="literal"/>

      </wsdl:input>

       <wsdl:output name="doLogin_loginActionResponse">
         <wsdlsoap:body use="literal"/>

      </wsdl:output>

    </wsdl:operation>

  </wsdl:binding>

   <wsdl:service name="AuthenticateService">
     <wsdl:port binding="impl:AuthenticateSoapBinding" name="Authenticate">
       <wsdlsoap:address location="http://localhost:9081/WebServiceProject2/services/Authenticate"/>

    </wsdl:port>

  </wsdl:service>

</wsdl:definitions>

但是当我尝试调用wsdl操作时,遇到以下错误:

[6/4/13 15:54:36:006 SGT] 000000b7 SystemOut     O Testing Start
[6/4/13 15:54:36:010 SGT] 000000b7 WebServicesSe E com.ibm.ws.webservices.engine.transport.http.WebServicesServlet doPost WSWS3227E:  Error: Exception:
                                 WebServicesFault
 faultCode: Server
 faultString: Internal Error
 faultActor: null
 faultDetail: 

Internal Error
    at com.ibm.ws.webservices.engine.PivotHandlerWrapper.bindExceptionToResponse(PivotHandlerWrapper.java:531)
    at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:353)
    at com.ibm.ws.webservices.engine.handlers.jaxrpc.JAXRPCHandler.invoke(JAXRPCHandler.java:153)
    at com.ibm.ws.webservices.engine.handlers.WrappedHandler.invoke(WrappedHandler.java:64)
    at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:264)
    at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:264)
    at com.ibm.ws.webservices.engine.WebServicesEngine.invoke(WebServicesEngine.java:336)
    at com.ibm.ws.webservices.engine.transport.http.WebServicesServlet.doPost(WebServicesServlet.java:1153)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at com.ibm.ws.webservices.engine.transport.http.WebServicesServletBase.service(WebServicesServletBase.java:344)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1225)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:775)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:457)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1032)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:908)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:277)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:166)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1691)

SOAP响应信封:

  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
  <soapenv:Fault>
  <faultcode>Server</faultcode> 
  <faultstring>Internal Error</faultstring> 
  </soapenv:Fault>
  </soapenv:Body>
  </soapenv:Envelope>

非常感谢您的回复。 感谢。

1 个答案:

答案 0 :(得分:0)

错误消息与此类似:

JAX-WS server-side SOAPHandler that returns fault gets "Internal Error" on WebSphere v8

据IBM称:

  

当webservices.unify.faults设置为“true”时,运行时异常   由应用程序代码抛出的统一,客户端将收到   指示“内部错误”的SOAP错误消息。

     

此APAR的修复程序目前适用于包含在修订包中   7.0.0.25和8.0.0.4。有关交付信息,请参阅推荐更新页面:   http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980

也许您可以将您的WebSphere版本更新为 8.0.0.4

相关问题