我想使用 Apache Axis 在 Jax-RPC 中创建一个简单的 Web 服务。
我也想实现它的春天性质。
我是 Jax-RPC 的新手,可以分享一些参考资料。
谢谢。
我想使用 Apache Axis 在 Jax-RPC 中创建一个简单的 Web 服务。
我也想实现它的春天性质。
我是 Jax-RPC 的新手,可以分享一些参考资料。
谢谢。
请查看 spring 提供的文档:
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 执行此操作:
创建两个类:
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 Web 服务的实现类可以作为 Spring bean 公开的处理程序。
在Axis WSDD
文件java:SPRING
中为要公开为 Spring bean 的 Web 服务配置提供程序。定义参数的唯一值springBeanId
。例如(来自 WSDD 文件):
<ns:service name="TestService" provider="java:SPRING" use="literal">
<ns:parameter name="springBeanId" value="webServiceImpl" />
<!-- ... -->
</ns:service>
在 中将您的 Web 服务实现定义为 Spring bean WEB-INF/applicationContext.xml
,例如:
<bean id="webServiceImpl" class="your.pkg.WebServiceImpl">
</bean>
在这些步骤之后,您可以将您的 Web 服务实现类用作常见的 Spring bean。