Java 如何使用JAX-WS从Webservice访问DAO

Java 如何使用JAX-WS从Webservice访问DAO,java,web-services,spring,Java,Web Services,Spring,刚开始使用JAX-WS。我创建了服务类和DAO类。我的服务运行良好,但它提供了NullPointerExeption b'z,因为它无法定位到DAO;我正试图从服务类调用DAO: package com.nmmc.works.service.impl; @WebService(serviceName="MyService") public class SecurityServiceImpl extends GenericServiceImpl implements ISecurityServic

刚开始使用JAX-WS。我创建了服务类和DAO类。我的服务运行良好,但它提供了NullPointerExeption b'z,因为它无法定位到DAO;我正试图从服务类调用DAO:

package com.nmmc.works.service.impl;
@WebService(serviceName="MyService")
public class SecurityServiceImpl extends GenericServiceImpl implements ISecurityService
{   
    private ISecurityDAO securityDAO;

....getter setter methods....

@WebMethod
    public Integer getBidAcceptanceIdForSDPayment(Integer tMastNo)
    {   
        InternalResultsResponse<Object> response = getSecurityDAO().getMyMethod(tenderMastNo);
        if(response != null && response.getResultsList().size() > 0){
            return Integer.parseInt(response.getFirstResult().toString());  
        }else{
            return -1;
        }

    }
package com.nmmc.works.service.impl;
@WebService(serviceName=“MyService”)
公共类SecurityServiceImpl扩展GenericServiceImpl实现ISecurityService
{   
私人ISecurityDAO securityDAO;
…getter setter方法。。。。
@网络方法
公共整数getBidAcceptanceIdForSDPayment(整数tMastNo)
{   
InternalResultsResponse=getSecurityDAO().getMyMethod(tenderMastNo);
if(response!=null&&response.getResultsList().size()>0){
返回Integer.parseInt(response.getFirstResult().toString());
}否则{
返回-1;
}
}
和sun jaxws.xml

<b>
<?xml version="1.0" encoding="UTF-8"?>
    <endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
      <endpoint 
          implementation="com.nmmc.works.service.impl.SecurityDepositServiceImpl"

          name="MyServices" 
          url-pattern="myPath/SecurityServiceImpl"
          />
    </endpoints></b>

在web.xml中

<b><listener>
      <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>WebServices</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>WebServices</servlet-name>
        <url-pattern>/ws/*</url-pattern>
    </servlet-mapping></b>

com.sun.xml.ws.transport.http.servlet.WSServletContextListener
的集成
com.sun.xml.ws.transport.http.servlet.WSServlet
2.
的集成
/ws/*

您的SecurityServiceImpl在运行时没有DAO。您必须确保正确创建DAO并将其注入/获取。

是getSecurityDAO()成功实例化或返回dao?stacktrace怎么说?在哪里/如何注入dao实现?实际上,当从服务中删除注释时,将注释放置在上面给出的位置时,它可以正常工作,但在服务中无法实例化dao.my works-Service-application-context.xml和works dao应用程序lication-context.xml@mezmo它无法实例化DAO,因此它返回null…我在works-service-application-context.xml中配置了服务,在works-DAO-application-context.xml@balashaeb中配置了DAO:什么使用了您的安全服务,它从哪里获得服务?我在.xml文件中配置了所有bean。我还没有配置web服务配置文件中的se xml文件,因此我的服务无法定位到该文件,但当我在服务类中创建DAO实例时,它进入了DAO,但也调用了Hibernate。那么有没有办法在web服务配置文件中包含bean定义文件?@Balasheb:我不知道您的“web服务配置文件”是什么是的,但是除非您使用AspectJ编织,否则您不能仅仅“新建”一个服务或DAO并期望它在没有适当设置其所有依赖项的情况下工作。