Создание простых веб-сервисов с использованием JAX-RPC в Apache Axis
Я хочу создать простые веб-сервисы в Jax-RPC, используя Apache Axis.
Я также хочу реализовать весеннюю природу к этому.
Я новичок в Jax-RPC, может поделиться некоторыми ссылками.
Благодарю.
2 ответа
Apache Axis
а также JAX-RPC
должны независимые рамки для создания веб-сервисов. Никто не мог ответить на ваш вопрос, потому что нет правильного ответа на него. Что я могу сделать, так это просто дать вам несколько ссылок для начала, чтобы вы могли лучше понять, что такое JAX-RPC и Apache Axis.
Увидеть:
Из всех ваших предыдущих вопросов, связанных с этим, я предполагаю, что вам нужно поддержать rpc/encoded
WSDL стиль. Ну, JAX-RPC и Axis сделают это. Не знаю, как это сделать через JAX-RPC
но вот несколько советов, как это сделать с помощью Axis и Spring:
Создайте два класса:
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
файл и поместите его в свой путь к классу. Эти классы являются обработчиками, которые класс реализации вашего веб-сервиса Axis может быть представлен как bean-компонент Spring.
В Axis WSDD
настройка файла java:SPRING
провайдер для веб-сервиса, который вы хотите представить как Spring bean. Определить уникальное значение для параметра springBeanId
, Например (из файла WSDD):
<ns:service name="TestService" provider="java:SPRING" use="literal">
<ns:parameter name="springBeanId" value="webServiceImpl" />
<!-- ... -->
</ns:service>
Определите реализацию своего веб-сервиса как Spring bean в WEB-INF/applicationContext.xml
, например:
<bean id="webServiceImpl" class="your.pkg.WebServiceImpl">
</bean>
После этих шагов вы сможете использовать свой класс реализации веб-сервиса как обычный компонент Spring.
Пожалуйста, ознакомьтесь с документацией, предоставленной весной:
http://static.springsource.org/spring/docs/2.5.x/reference/remoting.html