在java webservice发布中如何发布多个方法和模型

> EJB3.0器皿模型的WEB服务-WebService
EJB3.0器皿模型的WEB服务-WebService
llliii2150 & &
发布时间: & &
浏览:94 & &
回复:0 & &
悬赏:0.0希赛币
EJB3.0容器模型的WEB服务-WebService
& 使用JBoss、EJB3.0、开发WebService和客户端: 1、 首先我们先建立Webservice: 第一步:首先建立一个普通的Java项目并且导入G:\javaEEServers\jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\client下的所有*.jar文件第二步:建立EJB Bean接口如下:public interface OrderService { public String getUserName(String name); public Order getOrder(String orderid); public List&Order& getOrders();}第三步:建立实现这个EJB Bean接口实现类@Stateless //这里指定Bean的会话状态@Remote(OrderService.class)//远程接口//修改WebService中的一些属性方法如下@WebService(targetNamespace="htttp://"//名字空间 ,name="OrderService"//portType 的name
,serviceName="OrderServiceBean")//修改服务的名称public class OrderServiceBean implements OrderService {
//需要把某个方法发布为Webservice在其前面加上@WebMethod其他没有加的默认不发布问Webservice方法
@Override public Order getOrder(String orderid) {
//这里只是模拟数据,可从数据库中得到数据
Order order=new Order();
order.setOrderid(orderid);
order.setName("小李");
} @Override public List&Order& getOrders() {
List&Order& orders=new ArrayList&Order&();
Order order1=new Order();
order1.setOrderid("111");
order1.setName("小张");
Order order2=new Order();
order2.setOrderid("222");
order2.setName("小王");
orders.add(order1);
orders.add(order2);
} @Override public String getUserName(String name) {
}}第四步:使用ANT来编译、发布我们的EJB Bean& build.xml& xml version="1.0" &&!-- ======================================================================= --&&!-- EJB3 HelloWorld build file&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& --&&!-- ======================================================================= --&&project name="WebService" default="ejbjar" basedir="."& &property environment="env" /& &property name="app.dir" value="${basedir}" /& &property name="src.dir" value="${app.dir}" /& &property name="jboss.home" value="${env.JBOSS_HOME}" /& &property name="jbosnfig" value="default" /& &property name="build.dir" value="${app.dir}\build" /& &property name="build.classes.dir" value="${build.dir}\classes" /& &!-- Build classpath --& &path id="build.classpath"&
&fileset dir="${jboss.home}\client"&
&include name="*.jar" /&
&/fileset&
&pathelement location="${build.classes.dir}" /& &/path& &!-- =================================================================== --& &!-- Prepares the build directory&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& --& &!-- =================================================================== --& &target name="prepare" depends="clean"&
&mkdir dir="${build.dir}" /&
&mkdir dir="${build.classes.dir}" /& &/target& &!-- =================================================================== --& &!-- Compiles the source code&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& --& &!-- =================================================================== --& &target name="compile" depends="prepare" description="编绎"&
&javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="on" deprecation="on" optimize="off" includes="com/**"&
&classpath refid="build.classpath" /&
&/javac& &/target& &target name="ejbjar" depends="compile" description="创建EJB发布包"&
&jar jarfile="${app.dir}\HelloWorld.jar"&
&fileset dir="${build.classes.dir}"&
&include name="com/**/*.class" /&
&/fileset&
&/jar& &/target& &target name="deploy" depends="ejbjar"&
&copy file="${app.dir}\HelloWorld.jar" todir="${jboss.home}\server\${jbosnfig}\deploy" /& &/target& &!-- =================================================================== --& &!-- Cleans up generated stuff&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& --& &!-- =================================================================== --& &target name="clean"&
&delete dir="${build.dir}" /&
&delete file="${jboss.home}\server\${jbosnfig}\deploy\HelloWorld.jar" /& &/target&&/project&第五步:发布我们的EJB Bean ---&之前开启JBoss服务第六步:编写我们的WebServiceClient 我们使用wsimport工具的Ant任务类生成辅助类 build.xml& xml version="1.0" encoding="UTF-8" &&project name="WebServiceClient" default="wsclientgen" basedir="."&&& &property name="src.dir" value="${basedir}/src" /&&& &path id="build.classpath" description="设置类路径"&&&&&&&& &fileset dir="${basedir}/lib"&&&&&&&&&&&& &include name="*.jar"/&&&&&&&& &/fileset&&&& &/path&&&& &target name="wsclientgen" description="生成webservice客户端辅助代码,执行后请刷新项目"&&&&
&taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport" classpat/&&&&
&wsimport //这里的""可以再JBoss客户端得到//http://localhost:8080/jbossws/serviceswsdl="" &&&
sourcedestdir="${src.dir}" package="com.foshanshop.ws.client" keep="true" &&&
verbose="true" destdir="${basedir}/bin"/&&&& &/target&&/project&第七步:编译生成辅助类 这是可以看到我们的Src目录中生成了许多文件第八步:我们编写单元测试来调用Webservice的代码public class Test { @BeforeClass public static void setUpBeforeClass() throws Exception { }
@org.junit.Test public void getOrder() {
OrderServiceBean orderServiceBean =new OrderServiceBean();
OrderService order=orderServiceBean.getOrderServicePort();
Order order2=order.getOrder("333");
System.out.println(order2.getOrderid()+order2.getName()); } }
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2-如何创建,发布Web Service和 C#WINFORM里如何调用WEB Service API_百度知道
如何创建,发布Web Service和 C#WINFORM里如何调用WEB Service API
提问者采纳
一、创建和发布Web Service
Web服务方法中可以返回一个DataSet对象
WEB服务可以说是下一代WEB应用程序的基础,无论客户端是WINDOWS应用、ASP.NET Web Form程序、甚至其他语言的客户端,都可以与同一个WEB服务通信,其平台和语言无关性使其有了广阔的发展空间。利用VS2005和IIS我们可以很容易地发布一个WEB SERVICE,因为其中有几个细节需要注意,所在初学者常常在这里出现问题,现通过一个简单的例子说明如何创建和发布一个WEB SERVICE。环境:Windows Server 2003,.Net FrameWork 2.0,IIS6.0工具:VS20051.首先VS2005中新建一个WEB服务项目。打开“文件”-“新建”-“网站”,在对话框中选择“ASP.NET Web服务”,VS2005会自动生成一个Service.cs文件,包含如下代码:using Susing System.Wusing System.Web.Susing System.Web.Services.P[WebService(Namespace = &&)][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]public class Service : System.Web.Services.WebService{
public Service () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}[WebMethod]
public string HelloWorld() {
return &Hello World&;
}你可以在这里修改自己的命名空间,加入自己的方法,但本文只是为了说明如何创建和发布,所以对Service.cs不做任何更改。2.生成网站很简单,“生成”-“生成网站”或直接Shift+F63.发布网站也是简单,“生成”-“发布网站”,这里会弹出一个对话框,什么也不需要修改,记下发布的目录。比如:D:/我的文档/Visual Studio 2005/Projects/WebSite1/PrecompiledWeb/WebSite1,我们需要目录下的文件。4.配置IIS在你的WEB目录下一个文件夹,比如webservice,并将第3步发布目录中的所有文件和目录拷贝到这个目录中,打开IIS,找到你的站点,在这个webservice目录上点右键,选择属性,在弹出对话框的“目录”选择项卡中点击“创建”按钮,然后确定即可。到这时,已经大功告成,你可以通过访问http://域名/webservice/Service.asmx来验证。页面会出现如下图所示内容:注意:除了需要在IIS中对服务目录创建程序外,还要注意防火墙或杀毒软件的设置,我在首次访问service.asmx文件时,杀毒软件报告w3wp.exe在系统文件夹中生成asp_code.dll等,应该允许其他创建,否则会无法访问。通过这样简单的方法,你可以轻松建立自己的WEB服务,在同一站点还可以有多个WEB服务。二、c#的winform中调用Web Service API(VB6.0也可以调用该web服务)
现在以C# WinForm为例谈谈如何使用它 ,在服务中我们只有一个自动生成的方法:HelloWord(),其实现如下:[WebMethod]public string HelloWorld(){return &Hello World&;}在WINFORM中我们将添加一个按钮,添加单击事件,在事件处理函数中弹出一个对话框显示HelloWord的结果。1.添加WEB引用在VS2005中新建一个Windows应用程序项目,取名testwebservice,在项目中添加一个WEB引用,可在“解决方案资源管理器”的项目名上点右键添加,在弹出对话框中的URL输入框中输入WEB服务器的路径:如http://你的域名/web服务务路径/service.asmx,点击“前行”按钮后会搜索这个服务,并在右边报告找到的服务,并在左边显示service.asmx页面,我们在WEB引用名输入框中输入一个名字,这个将做为程序中WEB服务的命名空间名,这里我们取名mywebservice。2.添加按钮单击事件在Form中拖出一个Button按钮,双击单击事件处理方法,代码如下:private void button1_Click(object sender, EventArgs e)
mywebservice.Service ws = new testwebservice.mywebservice.Service();
MessageBox.Show (ws.HelloWorld());
}其中mywebservice.Service ws = new testwebservice.mywebservice.Service()是实例化一个WEB服务对象,ws.HelloWorld()是调用WEB服务中的这个HelloWorld方法,其返回字符串将用MessageBox.Show()函数显示出来。好了,最简单的一个调用WEB服务API的WinForm例子已经完成了,编译运行,单击按钮,将会弹出对话框显示“Hello World”信息。重要的一点,在.net的WEB服务API中,除了一般的数据类型外,还可以返回结构和DataSet对象,有了这一点,就可以构建我们大多数的数据库应用了。好了,接下来的工作就是在WEB服务中添加你的API完成你的工作了。转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦
资深电脑人
其他类似问题
为您推荐:
winform的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁在项目中使用AXIS2发布WebService
Axis2+tomcat7.0 实现webService 服务端发布与客户端的调用。&&Aixs2开发webService的方法有很多,在此只介绍一种比较简单的实现方法。 第一步:首先要下载开发所需要的jar包& &下载:axis2-1.6.2-war.zip&& 下载完后将axis2.war放至tomcat安装目录下的webapps文件夹下,然后启动tomcat后,在webapps目录下会生成axis2文件夹。&&访问http://localhost:8080/axis2/能看到以下页面表示axis2运行成功。& &
第二步&&在MyEclipse下新建Web Project,工程名:elecProject。新建包cn.itcast.elec.service,在cn.itcast.elec.service下新建类WebSystemDDLServiceImpl。代码如下:&&package cn.itcast.elec.service. import java.util.ArrayLimport java.util.LinkedHashMimport java.util.Limport java.util.M import mons.lang.StringUimport org.springframework.context.ApplicationCimport org.springframework.context.support.ClassPathXmlApplicationC import cn.itcast.elec.dao.IElecSystemDDLDimport cn.itcast.elec.domain.ElecSystemDDL; public class WebSystemDDLServiceImpl { & &public String findSystemByKeyword(String keyword) {& && &ApplicationContext ac = new ClassPathXmlApplicationContext(&beans.xml&);& && &IElecSystemDDLDao elecSystemDDLDao = (IElecSystemDDLDao) ac.getBean(IElecSystemDDLDao.SERVICE_NAME);& && && && &//组织查询条件& && &String condition = &&;& && &List&Object& paramsList = new ArrayList&Object&();& && &if(StringUtils.isNotBlank(keyword)){& && && &condition += & and o.keyword = ?&;& && && &paramsList.add(keyword);& && &}& && &Object [] params = paramsList.toArray();& && &//排序语句& && &Map&String, String& orderby = new LinkedHashMap&String, String&();& && &orderby.put(&o.ddlCode&,&asc&);//按照数据项的编号升序排列& && &//数据字典进行查询的时候,使用二级缓存增强检索的效率& && &List&ElecSystemDDL& list = elecSystemDDLDao.findColectionByConditionNoPageWithCache(condition, params, orderby);//& & List&ElecSystemDDL& list = elecSystemDDLDao.findColectionByConditionNoPage(condition, params, orderby);& && &StringBuffer webObject&&= new StringBuffer(&&);//axis2支持String类型和XML的类型& && &if(list!=null && list.size()&0){& && && &for(int i=0;i&list.size();i++){& && && && &webObject.append(list.get(i).getDdlName()+&,&);//值之间用逗号分隔& && && &}& && && &webObject.deleteCharAt(webObject.length()-1);& && &}& && &return webObject.toString();& &}} 在WEB-INF目录下修改web.xml文件,内容如下:&& &?xml version=&1.0& encoding=&UTF-8&?& &web-app version=&2.5&& &xmlns=&/xml/ns/javaee&& & xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&& &xsi:schemaLocation=&/xml/ns/javaee& &&&& &&&&!--Axis2 config start--& &servlet&&&&servlet-name&AxisServlet&/servlet-name&& &&servlet-class&org.apache.axis2.transport.http.AxisServlet&/servlet-class && &&load-on-startup&1&/load-on-startup& &/servlet&&&&servlet-mapping&& &&&&servlet-name&AxisServlet&/servlet-name&& & &url-pattern&/services/*&/url-pattern&& &&/servlet-mapping&& & &!--Axis2&&end--&& &&/web-app&& &把tomcat安装目录下的webapps/axis2/WEB-INF下的modules、service和conf文件拷至itcastProject下的WEB-INF目录下。同时把lib下的如下jar包也拷到项目的lib包下。 为了与项目的其他包不发生冲突,需要的jar包有:
然后在WEB-INF/services下新建systemDDLService/META-INF路径,META-INF下新建services.xml,内容如下:&&&?xml version=&1.0& encoding=&UTF-8&?&&service name=&systemDDLService&&& && & & &&description&elecProject Service Example&/description&& && &&&& &&parameter name=&ServiceClass&&cn.itcast.elec.service.impl.WebSystemDDLServiceImpl&/parameter&&&& &&operation name=&findSystemByKeyword&&& && && &&&& && &&messageReceiver&&class=&org.apache.axis2.rpc.receivers.RPCMessageReceiver& /&& && & & &&/operation&&/service& & &
启动tomcat后访问:http://127.0.0.1:8080/elecProject/services/systemDDLService?wsdl能看到服务信息了。&&到此Axis2的WebService服务已成功发布。Axis2客户端调用: 下面看看利用axis2 客户端调用实例& &客户端程序需要的jar包 新建一个客户端的程序中使用:/***调用网络服务axis调用webservice**/& && &this.webElecSystemDDLService();/***********************************/import javax.xml.namespace.QNimport org.apache.axis2.addressing.EndpointRimport org.apache.axis2.client.Oimport org.apache.axis2.rpc.client.RPCServiceC private void webElecSystemDDLService() {& && &String xmlStr = &性别&;& && && &String&&url = &http://127.0.0.1:8080/itcast0408elec/services/systemDDLService&;& && && &String method=&findSystemByKeyword&;& & & && &String&&webObject = null;& && && & try {& && && && && && && & RPCServiceClient serviceClient = new RPCServiceClient();& & & && && && & Options options = serviceClient.getOptions();& &&&& && && && & EndpointReference targetEPR = new EndpointReference(url);& & & && && && & options.setTo(targetEPR);& &&&& && && && & /** 在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,& && && && && & 也就是&wsdl:definitions&元素的targetNamespace属性值,method指定方法名&&& && && && & */& && && && & QName opAddEntry = new&&QName(&http://impl.service.&,method); & && && && &&&/** 参数,如果有多个,继续往后面增加即可,不用指定参数的名称*/& & & && && && & Object[] opAddEntryArgs = new Object[] {xmlStr};& && && && && && & // 返回参数类型,这个和axis1有点区别& && && && && && & /**invokeBlocking方法有三个参数,& && && && &&&*&&其中第一个参数的类型是QName对象,表示要调用的方法名;& && && && && && && &&&第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];& && && && && && && & 第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。&&& && && && &&&*/ & && && && & /**注意: 当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{}& && && && && && && && && & 如果被调用的WebService方法没有返回值,应使用RPCServiceClient类的invokeRobust方法,& &&&& && && && && && && & 该方法只有两个参数,它们的含义与invokeBlocking方法的前两个参数的含义相同 & && && && &&&*/& &&&& && && && & Class[] classes = new Class[] { String.class };& && && && && && & webObject = (String)serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0];& && && && && && & System.out.println(webObject);& && & & && && & } & && & catch (Exception e) {& && && && & e.printStackTrace();& &&&& && && & long end = System.currentTimeMillis();& && && & }& && && &} 总结:以上就是Axis2 服务发布与调用的简单案例。至于其他的实现方法有兴趣的可以继续研究。&&
看看先,顶一个!
武汉最强,没有之一网络营销课程重磅升级PHP学院落户大上海,一年多赚10万元游戏开发培训
? ? ? ? ? ? ? ? ? ?
Powered by同时在一个WebService服务中发布多个普通Java类
package&public&class&MyService{
&&&&public&String&getGreeting(String&name){
&&&&&&&&return&"您好&"&+&
&&&&public&void&update(String&data){
&&&&&&&&System.out.println("&"&+&data&+&"&已经更新");
package&public&class&MyServiceOther{
&&&&public&String&getName(){&
&&&&&&&&return&"shihuan";
在services.xml文件中可以使用如下的配置代码来配置MyService和MyServiceOther类:
&serviceGroup&&&&
&service&name="myService"&
&description&
Web&Service例子
&/description&
&parameter&name="ServiceClass"&
&&&&&&&&&&&
service.MyService&&
&/parameter&
&messageReceivers&
&messageReceiver&mep="http://www.w3.org/2004/08/wsdl/in-out"
&&&&&&&&&&
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"&/&
&&&&&&&&&&&
&messageReceiver&mep="http://www.w3.org/2004/08/wsdl/in-only"
&&&&&&&&&&
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"&/&
&/messageReceivers&&&&
&/service&&&&
&service&name="myServiceOther"&
&description&
Web&Service例子
&/description&
&& &parameter&name="ServiceClass"&
service.MyServiceOther&&
&/parameter&
&& &messageReceivers&
& & &messageReceiver&mep="http://www.w3.org/2004/08/wsdl/in-out"
&& class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"&/&
&messageReceiver&mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"&/&
&/messageReceivers&&&&
&/service&&/serviceGroup&
【注】:myService和myServiceOther就是中?wsdl前
面的那个ServiceName
本例的访问路径应该是:
&&/getGreeting
&&/getName
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 cxf发布webservice 的文章

 

随机推荐