2017-03-22 20 views
0

私はWebMVCを使用しており、クラスごとにWebサービスを生成しています。 Webサービスの応答は問題ありませんが、データを格納するときにはnullポイント例外が発生します。Spring WebMVC WebServiceデータストアautowired null

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()); 
    } 

} 

日食Webサービスエクスプローラ経由で呼び出し、Webサービスの後、メッセージの下に取得:

<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> 

答えて

0

wm011DNinfoクラスは、春の豆ではありません。したがって、他の豆を注入することはできません(経由でPIDNHeaderDAO)。 @Componentのようなものを使用するか、getPIDNHeaderDAOメソッドの場合のように、手動で@Bean注釈付きのメソッドを作成します。

+0

これはBeanではないことをどのように知っていますか。おそらくアノテーションはコード内で欠けているかもしれません。 – Jens

+0

@Jensかもしれません。私が間違っていると、私は自分の答えを削除します。しかし、私は確かに私はそうでないと確信しています。 :) –

+0

私は@Componentを追加しました public class PIDNHeaderDAOImplはPIDNHeaderDAOを実装していますが、他のmvc javaクラスはコンパイル時にエラーになります。エラー:コンテキストの初期化に失敗しました org.springframework.beans.factory.UnsatisfiedDependencyException: 'helloController'という名前のBeanを作成中にエラーが発生しました: 'piDNHeaderDAO'フィールドで表現されている満足度の低い依存関係:[net.viralpatel.spring.dao.PIDNHeaderDAO]期待される単一の一致するBeanですが、見つかった2:PIDNHeaderDAOImpl、getPIDNHeaderDAO; –