?EJB 为远程提供JNDI 代码如下:
?
@Stateless(mappedName = "HelloWorldBean")
@Remote({HollowWorld.class})
public class HollowWordBean implements HollowWorld,Serializable{
?private static final long serialVersionUID = 1L;
?// @Override
?public void remotePrintln() {
??// TODO Auto-generated method stub
??System.out.println("remote is run!!");
?}
}
?
系统测试代码为:
?
?????? java.util.Properties prop = new java.util.Properties();??
????? prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,??
????????????? WLInitialContextFactory.class.getName());??
????? prop.setProperty(Context.PROVIDER_URL, "t3://localhost:7001"); //
????? prop.setProperty(Context.SECURITY_PRINCIPAL, "user");
????? prop.setProperty(Context.SECURITY_CREDENTIALS, "12345678");
????? InitialContext ic = new InitialContext(prop);?????
?????
????? UserOptionTestDao? userOptionDao = (UserOptionTestDao)ic.lookup?????????? ("userDao#com.yineng.jpa.UserOptionTestDao");//lookup的名称在weblogic 中可以查找到
?
?
EJB 提供webservice服务的代码:
?
? /**
?*@see 本地的webservice实现类
?*@author desert
?*@version 1.0
?*/
@Stateless
@WebService(name = "HelloWorldService",? serviceName = "HelloWorldService",targetNamespace=Contants.targetNamespace)
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class HelloWorldService implements HelloWorldServiceInteface{
?
?@WebMethod
?@WebResult(name="String")
?public String? sayHello(@WebParam(name = "name")String name){
??return name+ "说:这是我的第一个web 服务";
?}
}
?
系统的测试代码:
?????? 创建远程接口
????? @WebService(targetNamespace=Contants.targetNamespace) //必须要否则无法调取远程?????????????? (targetNamespace="http://127.0.0.1")
?????????? public interface HelloWorldServiceInteface{
????
????????????????????@WebMethod?? //必须要否则无法调取远程
??????????????????? @WebResult(name="String")?? //必须要否则无法调取远程
????????????????? public String? sayHello(@WebParam(name = "name")String name);
?
??????????? }
?
? 测试类(用的Apache 的 cxf 解析webservice):
? ApplicationContext ctx = new ClassPathXmlApplicationContext(??
???????????????? "applicationContext.xml");??
????????
???????? HelloWorldServiceInteface client = (HelloWorldServiceInteface) ctx.getBean("client");??
???????? String result = client.sayHello("HELLO");??
???????? System.out.println(result);??
?
?? cxf 在spring 中的配置文件如下:
??? <!--载入webservice properties-->
??? <bean id="propertyConfigurer"
????????????? class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
??????? <property name="location" value="classpath:webservice-config" />
??? </bean>?????????????????
????
????
??? <bean id="client" class="com.yineng.webservice.HelloWorldServiceInteface"
???????????????????????????? factory-bean="clientFactory" factory-method="create"/>
??? <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
??????????????????? <property name="serviceClass" value="com.yineng.webservice.HelloWorldServiceInteface"/>
??????????????????? <property name="address">
??????????????????????? <value>${ws-test}</value>
??????????????????? </property>?
?
??? </bean>
?
????webservice-config 文件内容如下:
????????????????? ws-test=http://127.0.0.1:7001/HelloWorldService/HelloWorldService
?
? 这个时SOA 最基本要了解的 如果有业务流程的话 可以用BPEL (自己探索)。下面有个详细的文档下载;如有误请谅解。
?
?