2013-04-22 104 views
1

我是新来的OFBiz和我创建了简单的ofbiz的服务,并指该链接http://www.packtpub.com/article/apache-ofbiz-service-engine-part1错误而调用的ofbiz服务

我创建实践项目进入热部署。

我在servicedef/services.xml中创建的服务如下面在learningFirstService.xml

`<service name="learningFirstService" engine="java" 
     location="org.ofbiz.practice.practice.PracticeServices" invoke="handleParameters"> 
     <description>Our First Service</description> 
     <attribute name="firstName" type="String" mode="IN" optional="true" /> 
     <attribute name="lastName" type="String" mode="IN" optional="true" /> 
    </service>` 

和创建PracticeServices.java类成src.org.ofbiz.practice.practice pakcage 和创建方法

public static Map learningFirstService(DispatchContext dctx, Map context){ 

     System.out.println("learning first service called"); 
     Map resultMap = ServiceUtil.returnSuccess("You have called on service 'learningFirstService' successfully!"); 
     return resultMap; 
    } 

,在我的ofbiz-component.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<ofbiz-component name="practice" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd"> 
     <resource-loader name="main" type="component"/> 

     <service-resource type="model" loader="main" location="servicedef/services.xml"/> 

    <webapp name="practice" 
     title="Practice" 
     server="default-server" 
     base-permission="OFBTOOLS" 
     location="webapp/practice" 
     mount-point="/practice" 
     app-bar-display="true"/> 
    <classpath type="dir" location="config"/> 


</ofbiz-component> 

learningforms.xml是像下面

<?xml version="1.0" encoding="UTF-8"?> 
<forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-form.xsd"> 

    <form name="TestingServices" type="single" target="${formTarget}"> 
     <field name="firstName"><text/></field> 
     <field name="lastName"><text/></field> 
     <field name="planetId"><text/></field> 
     <field name="submit"><submit/></field> 
    </form> 
</forms> 

和controller.xml有用于示出学习形式

 <request-map uri="TestFirstService"> 
      <event type="service" invoke="learningFirstService" /> 
      <response name="success" type="view" value="TestFirstService" /> 
     </request-map> 
    <view-map name="TestFirstService" type="screen" page="component://practice/widget/PracticeScreens.xml#learningForm"/> 

的learningForm在成功打开请求的映射。但是当我点击提交按钮时。它给控制台带来错误,如

 Error in request handler: 
    Exception: org.ofbiz.webapp.event.EventHandlerException 
    Message: Problems getting the service model (Cannot locate service by name (learningFirstService)) 
    ---- cause --------------------------------------------------------------------- 
    Exception: org.ofbiz.service.GenericServiceException 
    Message: Cannot locate service by name (learningFirstService) 
    ---- stack trace --------------------------------------------------------------- 
    org.ofbiz.service.GenericServiceException: Cannot locate service by name (learningFirstService) 
    org.ofbiz.service.DispatchContext.getModelService(DispatchContext.java:191) 
    org.ofbiz.webapp.event.ServiceEventHandler.invoke(ServiceEventHandler.java:116) 
    org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:648) 
    org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:394) 
    org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:224) 
    org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:87) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:339) 
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) 
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) 
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    java.lang.Thread.run(Thread.java:619) 

该错误表明它找不到我定义的服务。但不明白它出错的地方。请帮帮我。

谢谢先进。
ANKIT

+0

嗨,我解决了这个错误。由于语法错误,它只是在服务器启动时加载错误。但是我可以看到我的服务已注册,但在访问该服务时,会看到我的课没有发现异常。 请求处理程序错误: 异常:org.ofbiz.webapp.event.EventHandlerException 消息:服务调用错误(org.ofbiz.practice.practice.PracticeServices) ---- cause -------- -------------------------------------------------- ----------- 异常:java.lang.ClassNotFoundException 消息:org.ofbiz.practice.practice.PracticeServices – Ankit 2013-04-22 08:53:27

回答

2

我们的第一个服务 `

Web服务调用.... =的” THT值 “必须用相同

” org.ofbiz.practice.practice .PracticeServices“的方法,就像”learnFirstService“

+2

请重新表达您的答案,这是很难理解。 – pascalhein 2013-05-31 18:55:49

+0

就像下面一样,会没事的。 我们的第一个服务 ' – zgzlwm 2013-06-01 02:11:39