0

ApacheAxisを使用してJax-RPCで簡単なWebサービスを作成したいと思います。

それに春の自然も取り入れたいです。

私はJax-RPCを初めて使用しますが、いくつかの参照を共有できます。

ありがとう。

4

2 に答える 2

0

春に提供されたドキュメントを調べてください。

http://static.springsource.org/spring/docs/2.5.x/reference/remoting.html

于 2013-02-13T04:33:55.653 に答える
-1

Apache Axisそして、JAX-RPCWebサービスを作成するための独立したフレームワークになります。正解がないため、誰もあなたの質問に答えることができませんでした。私にできることは、JAX-RPCとApache Axisとは何かをよりよく理解できるように、開始するためのリンクをいくつか提供することです。

見る:

これに関連するこれまでのすべての質問から、rpc/encodedWSDLスタイルをサポートする必要があると思います。そうですね、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として使用できるようになります。

于 2013-02-13T09:05:46.597 に答える