私は、Spring Webアプリケーションを公開するためにそのアプリケーションを使用しているSpring起動アプリケーションを開発中です。私は春のブートアプリケーションでSOAP implのApache CFXフレームワークを使用しています。私はアノテーションベースのアプローチを使用しています。Spring起動アプリケーションでアプリケーションコンテキストを読み込めません
私はBeanのいずれかのSpring起動設定ファイルからApplication Contextを設定する際に問題に直面しています。以下は私のコードです。
@SpringBootApplication
@ComponentScan("com.test")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
コンフィギュレーションファイルは次のとおりです。
@Configuration
public class WebServiceConfiguration {
//All individual bean definitions should go here
@Autowired
ApplicationContext appContext;
@Bean
public ServletRegistrationBean cxfServlet() {
return new ServletRegistrationBean(new CXFServlet(), "/soap-api/*");
}
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Bean(name="IValidator")
public IValidator getValidator(){
return new Validator();
}
@Bean(name="SOAPprocessImpl")
public IPSoap getService() {
return new SOAPprocessImpl();
}
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), getService());
endpoint.publish("/WS_1.0");
endpoint.setWsdlLocation("process.wsdl");
return endpoint;
}
は今、私は私がバリBeanに扱う得ることができるようにアプリケーション・コンテキストを取得する必要のある豆SOAPprocessImplの実装を持っています。私は、コンフィグレーション・ファイルの中でSOAPprocessImplをBeanとして宣言しました。コードは
@javax.jws.WebService (endpointInterface="com.test.IPSoap")
public class SOAPprocessImpl implements IPSoap, ApplicationContextAware {
private static ApplicationContext context;
public static ApplicationContext getApplicationContext() {
return context;
}
@Override
public void setApplicationContext(ApplicationContext ac)
throws BeansException {
context = ac;
}
private static final Logger logger = Logger.getLogger(SOAPprocessImpl.class.getName());
private IValidator validator = (IValidator) context.getBean("IValidator"); // context is NULL here
public IRResponse GetBalance(TSSearchParams SearchParams) {
// Some processing logic
}
}
以下のような問題は、私が埋め込まれたTomcatにデプロイすることにより、ブートアプリケーションの実行時にアプリケーション・コンテキストをさえ実装後SOAPprocessImplクラスに設定された取得されていないということですApplicationContextAware。私はAutowiringも試しましたが、それもうまくいきません。
私は奇妙なことに、すべてのBeanが定義されているConfigurationファイルでApplicationContextを取得できるかどうかを確認しようとしました。ここでは適切に設定されています。
この問題の解決方法を教えてもらえますか?私はSpring Bootの初心者であり、いくつかの設定を見逃している可能性があります。前もって感謝します。
ありがとうございました。私はあなたのアプローチを試みましたが、それでも動作しません。コンテキストはまだnullです。 – vikeng21
'SOAPprocessImpl'パッケージはどのパッケージにありますか? – developer
SOAPprocessImplは別のパッケージにあります。 com.test.configとWebServiceConfigurationは他のパッケージにあります。 com.test.ws – vikeng21