ApacheAxisを使用してJax-RPCで簡単なWebサービスを作成したいと思います。
それに春の自然も取り入れたいです。
私はJax-RPCを初めて使用しますが、いくつかの参照を共有できます。
ありがとう。
ApacheAxisを使用してJax-RPCで簡単なWebサービスを作成したいと思います。
それに春の自然も取り入れたいです。
私はJax-RPCを初めて使用しますが、いくつかの参照を共有できます。
ありがとう。
春に提供されたドキュメントを調べてください。
http://static.springsource.org/spring/docs/2.5.x/reference/remoting.html
Apache Axis
そして、JAX-RPC
Webサービスを作成するための独立したフレームワークになります。正解がないため、誰もあなたの質問に答えることができませんでした。私にできることは、JAX-RPCとApache Axisとは何かをよりよく理解できるように、開始するためのリンクをいくつか提供することです。
見る:
これに関連するこれまでのすべての質問から、rpc/encoded
WSDLスタイルをサポートする必要があると思います。そうですね、JAX-RPCとAxisがそれを行います。経由でこれを行う方法がわかりませんJAX-RPC
が、これはAxisとSpringでこれを行う方法のヒントです。
2つのクラスを作成します。
import org.apache.axis.EngineConfiguration;
import org.apache.axis.Handler;
import org.apache.axis.deployment.wsdd.WSDDProvider;
import org.apache.axis.deployment.wsdd.WSDDService;
public class WSDDSpringProvider extends WSDDProvider {
public static final String PROVIDER_NAME = "SPRING";
public static final String PARAM_SPRING_BEAN_ID = "springBeanId";
public String getName(){
return "SPRING";
}
public Handler newProviderInstance(WSDDService service, EngineConfiguration registry)
throws Exception {
return new SpringProvider(service.getParameter("springBeanId"));
}
}
そして別の:
import java.io.PrintStream;
import java.lang.reflect.Method;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import org.apache.axis.MessageContext;
import org.apache.axis.providers.java.RPCProvider;
import org.apache.axis.transport.http.HTTPConstants;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
public class SpringProvider extends RPCProvider {
private String springBeanId;
public SpringProvider(String springBeanId) {
this.springBeanId = springBeanId;
}
protected Object makeNewServiceObject(MessageContext msgContext, String clsName)
throws Exception {
Servlet servlet = (Servlet)msgContext.getProperty(HTTPConstants.MC_HTTP_SERVLET);
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletConfig().getServletContext());
return wac.getBean(springBeanId);
}
protected Object invokeMethod(MessageContext msgContext, Method method, Object obj, Object argValues[])
throws Exception {
Method proxyMethod = obj.getClass().getMethod(method.getName(), method.getParameterTypes());
return proxyMethod.invoke(obj, argValues);
}
}
それらを.jar
ファイルとして作成し、クラスパスに入れます。これらのクラスは、AxisWebサービスの実装クラスがSpringBeanとして公開される可能性のあるハンドラーです。
Axis WSDD
ファイルで、SpringBeanとして公開するWebサービスのプロバイダーを構成しjava:SPRING
ます。パラメータの一意の値を定義しますspringBeanId
。例(WSDDファイルから):
<ns:service name="TestService" provider="java:SPRING" use="literal">
<ns:parameter name="springBeanId" value="webServiceImpl" />
<!-- ... -->
</ns:service>
WEB-INF/applicationContext.xml
次に、Webサービスの実装をSpringBeanとして定義します。
<bean id="webServiceImpl" class="your.pkg.WebServiceImpl">
</bean>
これらの手順を実行すると、Webサービス実装クラスを一般的なSpringBeanとして使用できるようになります。