簡體   English   中英

Spring WebMVC WebService數據存儲自動連接為null

[英]Spring WebMVC WebService data store autowired null

我正在使用WebMVC並按類生成Web服務。 Web服務響應很好,但是在存儲數據時會得到空點異常。

Web服務類piDNHeaderDAO1獲取空點異常

public class wm011DNinfo {

    @Autowired
    private PIDNHeaderDAO piDNHeaderDAO1;

    public OUTDNResponse[] processGenerate(INDNHeader[] inDNHeaders, INDNItem[] inDNItems) {


        //for data store
        PIDNHeader dnHeader = new PIDNHeader();
        dnHeader.setVbeln("test1");
        dnHeader.setVstel("test2");
        System.out.println("@ "+piDNHeaderDAO1);
        //System.out.println("@ "+piDNHeaderDAO2);
        piDNHeaderDAO1.saveOrUpdate(dnHeader);

        //for response
        OUTDNResponse[] outDNarray = new OUTDNResponse[1];
        OUTDNResponse outDN = new OUTDNResponse();

        outDN.setVbeln("OK");
        outDN.setZzint_msg("S");
        outDNarray[0] = outDN;

        return outDNarray;
    }

}

PIDNHeaderDAO

package net.viralpatel.spring.dao;

import java.util.List;
import net.viralpatel.spring.model.PIDNHeader;

public interface PIDNHeaderDAO {
    public void saveOrUpdate(PIDNHeader dnHeader);

    public void delete(String vbeln);

    public PIDNHeader get(String vbeln);

    public List<PIDNHeader> list();
}

PIDNHeaderDAOImpl

package net.viralpatel.spring.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import javax.sql.DataSource;

import net.viralpatel.spring.model.PIDNHeader;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;

public class PIDNHeaderDAOImpl implements PIDNHeaderDAO {

    private JdbcTemplate jdbcTemplate;

    public PIDNHeaderDAOImpl(DataSource dataSource) {
        jdbcTemplate = new JdbcTemplate(dataSource);
    }

    public void saveOrUpdate(PIDNHeader dnHeader) {
        // TODO Auto-generated method stub
        String sql = "INSERT INTO PIDNHeader " + "(vbeln, vstel) VALUES (?, ?)";
        jdbcTemplate.update(sql, dnHeader.getVbeln(), dnHeader.getVstel());


    }

    public void delete(String vbeln) {
        // TODO Auto-generated method stub
        String sql = "DELETE FROM PIDNHeader WHERE vbeln=?";
        jdbcTemplate.update(sql, vbeln);
    }

    public PIDNHeader get(String vbeln) {
        // TODO Auto-generated method stub
        String sql = "SELECT * FROM PIDNHeader WHERE vbeln=" + vbeln;
        return jdbcTemplate.query(sql, new ResultSetExtractor<PIDNHeader>() {

            public PIDNHeader extractData(ResultSet rs) throws SQLException,
                    DataAccessException {
                if (rs.next()) {
                    PIDNHeader dnHeader = new PIDNHeader();

                    dnHeader.setVbeln(rs.getString("vbeln"));
                    dnHeader.setVstel(rs.getString("vstel"));

                    return dnHeader;
                }

                return null;
            }

        });
    }

    public List<PIDNHeader> list() {
        // TODO Auto-generated method stub
        String sql = "SELECT * FROM PIDNHeader";
        List<PIDNHeader> listDNHeader = jdbcTemplate.query(sql, new RowMapper<PIDNHeader>() {

            public PIDNHeader mapRow(ResultSet rs, int rowNum) throws SQLException {
                PIDNHeader dnHeader = new PIDNHeader();

                dnHeader.setVbeln(rs.getString("vbeln"));
                dnHeader.setVstel(rs.getString("vstel"));

                return dnHeader;
            }

        });

        return listDNHeader;
    }

}

和AppConfig.java

package net.viralpatel.spring.config;
import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

import net.viralpatel.spring.dao.PIDNHeaderDAO;
import net.viralpatel.spring.dao.PIDNHeaderDAOImpl;


@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "net.viralpatel.spring")
public class AppConfig extends WebMvcConfigurerAdapter {
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");

        System.out.println("appconfig start");

        return viewResolver;
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }


    @Bean
    public DataSource getDataSource() {

        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        dataSource.setUrl("jdbc:sqlserver://192.168.4.22;DatabaseName=xxxx");
        dataSource.setUsername("xxxxx");
        dataSource.setPassword("accxxxxxpac");

        return dataSource;
    }


    @Bean
    public PIDNHeaderDAO getPIDNHeaderDAO() {
        System.out.println("PIDNHeaderDAO start");
        return new PIDNHeaderDAOImpl(getDataSource());
    }

}

通過Eclipse Web Service資源管理器調用Web Service后,獲得以下消息:

<soapenv:Fault>
  <soapenv:Fault>
    <faultcode>soapenv:ServeruserException</faultcode>
      <faultstring>java.lang.NullPointerException</faultstring>
        <detail>
          <nsl:hostname xmlns:ns1="http://xml.apache.org/axis/">home.local</nsl:hostname>
        </detail>
      </soapenv:Fault>
    </soapenv:Body>
</soapenv:Envelope>

wm011DNinfo類不是Spring bean。 因此,您不能將其他bean注入其中(在您的情況下,通過@Autowired PIDNHeaderDAO )。 使用類似@Component的方法,或手動創建帶有@Bean批注的方法(就像使用getPIDNHeaderDAO方法一樣)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM