c#.net winform如何上传文件.

c#.net winform如何上传文件.,第1张

webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录。
1Axis2
Axis是apache下一个开源的webservice开发组件,出现的算是比较早了,也比较成熟。这里主要介绍Axis+eclipse开发webservice,当然不用eclipse也可以开发和发布webservice,只是用eclipse会比较方便。

(1)下载eclipse的Java EE版本
(2)下载axis2
(3)下载eclipse的axis2插件
Axis2_Codegen_Wizard
Axis2_Service_Archiver
推荐使用13的版本

(4)eclipse安装axis2插件
1)在任意目录下新建一个Axis2文件夹,在该文件夹下新建eclipse目录,在eclipse目录中新建plugins目录和features目录,例如:D:\programSoftware\eclipse-SVN\Axis2\eclipse;
2)把下载的axis2插件解压,并把解压的文件放到新建的eclipse的plugins目录下;
3)在%eclipse_home%的目录下新建links目录,并在links目录下新建axis2link文件,内容为:path=D:\programSoftware\eclipse-SVN\Axis2;
4)重启eclipse,点击·file-new-other,如果看到Axis2 Wizards,则表明插件安装成功。

(5)安装axis2
(6)使用eclipse新建web工程,创建一个普通java类,至少包含一个方法。

(7)发布webservice
1)点击eclipse的File-New-other,打开Axis2 Wizards,选择Axis2 Service Archiver,然后Next;
2)选择Class File Location,也就是类文件存放路径,注意:只选到classes目录,不要包括包文件夹,然后Next;
3)选择Skip WSDL,然后Next
4)一路Next到Select the Service XML file to be included in the Service archive,勾选Generate theservice xml automatically;
5)Service Name-填写你的service名称,Class Name-填写类名称,要包括包名,然后点击load,然后点击Finish,这时webservice就发布成功了;
6)然后到%TOMCAT_HOME%/webapps/axis2/WEB-INF/services 看看是否多了一个aar的文件;
注意:以上的方式是发布到axis2war包中,你也可以把生成aar文件copy到你的实际应用中,同时,你也可以使用eclipse的create webservice功能发布你的webservice,选择axis2生成你的webservice,这样webservice就会部署到你的应用中了。

2Apche CXF
CXF开发webservice也是比较方便和简单的,它和spring的集成可以说是非常地好。举一个CXF开发webservice的例子吧。
1)在eclipse中新建一个web工程,导入依赖包,如图:

2)编写一个接口,如:
注意:CXF开发的webservice,接口中的方法的参数一定要以这种方式,否则客户端调用的时候CXF服务端会接收不到参数的值,name:参数名称,可不写(建议写上),targetNamespace:命名空间,一定要填写上,默认是包名反过来的顺序,mode:参数类型,IN表示输入。
3)编写一个实现类,实现接口的方法;
4)和spring的集成,编写一个bean文件,如:cxf-beansxml,内容如下:

Cxf-beansxml代码
<xml version="10" encoding="UTF-8" >
<import resource="classpath:META-INF/cxf/cxfxml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soapxml" />
<import resource="classpath:META-INF/cxf/cxf-servletxml" />

<jaxws:endpoint id="vote" implementor="comzclcxfserviceVoteImpl" address="/Vote" />
</beans>
这个文件比较容易理解,就不解释了。
5)配置CXFServlet
在webxml文件中配置CXFServlet,加载cxf-beansxml文件,内容如下:

Webxml代码
id="WebApp_ID" version="25">

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/cxf-beansxml</param-value>
</context-param>

<listener>
<listener-class>orgspringframeworkwebcontextContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>orgapachecxftransportservletCXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/services/</url-pattern>
</servlet-mapping>
</web-app>
把工程部署到中间件,如tomcat,就可以访问该webservice了。

3JDK开发webservice
1)编写一个Java类,如下:

Jdkwebservicejava代码
package demo;

import javaxjwsWebParam;
import javaxjwsWebService;
import javaxxmlwsEndpoint;

@WebService
public class JdkWebService {
return "Just do it," + value + "!";
}

public static void main(String[] args) {
}
}
2)运行该java类,在浏览器上就可以访问该webservice了。
注意:开发web工程的时候,这种方法不太友好。我们可以编写一个servlet类,在servlet类的初始化方法中发布webservice,这样我们的中间件服务器启动的时候就会帮我们自动webservice了。

4) xfire
开发WebService的框架不少,每个框架都有各自的有点,最近我用xfire练习开发WebService,下面是开发WebService的小例子,希望对入门的人有些小帮助
1新建一个java web project命名为TestWebService,将xfire相关的jar包添加到lib目录中,写接口类和实现类
Java代码
package comlampservice;

public interface MessageService {
public String getName(String name);
}
[java] view plaincopyprint
package comlampservice;

public interface MessageService {
public String getName(String name);
}
实现类
Java代码
package comlampserviceimpl;

import comlampserviceMessageService;

public class MessageServiceImpl implements MessageService {

public String getName(String name) {
return "hellow " + name + ", welcome to WebService world";
}

}
[java] view plaincopyprint
package comlampserviceimpl;

import comlampserviceMessageService;

public class MessageServiceImpl implements MessageService {

public String getName(String name) {
return "hellow " + name + ", welcome to WebService world";
}

}
在src目录下新建文件夹META-INF,然后再在其下新建文件夹xfire,在xfire目录下新建配置文件servicesxml
Xml代码
<xml version="10" encoding="UTF-8">
<service>
<name>MessageService</name>
<serviceClass>comlampserviceMessageService</serviceClass>
<implementationClass>comlampserviceimplMessageServiceImpl</implementationClass>
</service>
</beans>
[xml] view plaincopyprint
<xml version="10" encoding="UTF-8">
<service>
<name>MessageService</name>
<serviceClass>comlampserviceMessageService</serviceClass>
<implementationClass>comlampserviceimplMessageServiceImpl</implementationClass>
</service>
</beans>
最后在webxml中配置xfire的servlet
Xml代码
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/</url-pattern>
</servlet-mapping>
[xml] view plaincopyprint
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/</url-pattern>
</servlet-mapping>
这样服务器端开发完毕,现在开始客户端的开发
新建一个java project也将xfire相关的jar引入,我用ant在客户端生成代理对象,在项目路径下新建buildxml,代码为
Xml代码
<xml version="10" encoding="UTF-8">

<project name="WebService" basedir="" default="gen-webservice">

<property file="buildproperties">
</property>

<path id="project-classpath">
<fileset dir="${libdir}">
<include name="/jar" />
</fileset>
</path>

<target name="gen-webservice">
<taskdef name="wsgen" classname="orgcodehausxfiregenWsGenTask" classpathref="project-classpath" />

<wsgen outputDirectory="${srcdir}"
wsdl="${wsdldir}" package="comlampwsclient" overwrite="true"/>

</target>

</project>
[xml] view plaincopyprint
<xml version="10" encoding="UTF-8">

<project name="WebService" basedir="" default="gen-webservice">

<property file="buildproperties">
</property>

<path id="project-classpath">
<fileset dir="${libdir}">
<include name="/jar" />
</fileset>
</path>

<target name="gen-webservice">
<taskdef name="wsgen" classname="orgcodehausxfiregenWsGenTask" classpathref="project-classpath" />

<wsgen outputDirectory="${srcdir}"
wsdl="${wsdldir}" package="comlampwsclient" overwrite="true"/>

</target>

</project>

前面我自理解面复制java垃圾收前听师讲像内存满才做整体垃圾收,收垃圾同调用finalize构造类构造类覆盖finalize便于该类垃圾收执行些代码,比释放资源1JVMgc概述 gc即垃圾收集机制指jvm用于释放些再使用象所占用内存java语言并要求jvmgc没规定gc何工作用jvm都gc且数gc都使用类似算管理内存执行收集 *** 作 充理解垃圾收集算执行程才能效优化性能些垃圾收集专用于特殊应用程序比实应用程序主要避免垃圾收集断数OLTP应用程序则注重整体效率理解应用程序工作负荷jvm支持垃圾收集算便进行优化配置垃圾收集器 垃圾收集目于清除再使用象gc通确定象否象引用确定否收集该象gc首先要判断该象否候收集两种用引用计数象引用遍历 11引用计数 引用计数存储特定象所引用数说应用程序创建引用及引用超范围jvm必须适增减引用数某象引用数0便进行垃圾收集 12象引用遍历 早期jvm使用引用计数现数jvm采用象引用遍历象引用遍历组象始沿着整象图每条链接递归确定达(reachable)象某象能些根象(至少)达则作垃圾收集象遍历阶段gc必须记住哪些象达便删除达象称标记(marking)象 步gc要删除达象删除些gc简单扫描堆栈删除未标记未标记象并释放内存新象叫做清除(sweeping)种问题于内存段足用于新象组合起却许gc重新组织内存象并进行压缩(compact)形利用空间 gc需要停止其种意味着所与应用程序相关工作停止gc运行结响应期间增减许混杂请求另外更复杂 gc断增加或同运行减少或者清除应用程序断gc使用单线程完项工作则采用线程增加效率2几种垃圾收机制 21标记-清除收集器 种收集器首先遍历象图并标记达象扫描堆栈寻找未标记象并释放内存种收集器般使用单线程工作并停止其 *** 作 22标记-压缩收集器 叫标记-清除-压缩收集器与标记-清除收集器相同标记阶段第二阶段则标记象复制堆栈新域便压缩堆栈种收集器停止其 *** 作 23复制收集器 种收集器堆栈两域称半空间每仅使用半空间jvm新象则放另半空间gc运行达象复制另半空间压缩堆栈种适用于短存期象持续复制存期象则导致效率降低 24增量收集器 增量收集器堆栈域每仅域收集垃圾造较应用程序断 25代收集器 种收集器堆栈两或域用存放同寿命象jvm新象般放其某域段间继续存象获使用期并转入更寿命域代收集器同域使用同算优化性能 26并发收集器 并发收集器与应用程序同运行些收集器某点(比压缩)般都停止其 *** 作完特定任务其应用程序进行其台 *** 作所断其处理实际间降低 27并行收集器 并行收集器使用某种传统算并使用线程并行执行工作cpu机器使用线程技术显著提高java应用程序扩展性3Sun HotSpot 141 JVM堆调整 Sun HotSpot 141使用代收集器堆三主要域:新域、旧域及永久域Jvm所新象放新域旦象经历定数量垃圾收集循环便获使用期并进入旧域永久域jvm则存储classmethod象配置言永久域独立域并且认堆部 面介绍何控制些域使用-Xms-Xmx 控制整堆原始或值 面命令初始设置128M: java –Xms128m –Xmx256m控制新域使用-XX:NewRatio设置新域堆所占比例 面命令整堆设置128m新域比率设置3即新域与旧域比例1:3新域堆1/4或32M:java –Xms128m –Xmx128m–XX:NewRatio =3使用-XX:NewSize-XX:MaxNewsize设置新域初始值值 面命令新域初始值值设置64m:java –Xms256m –Xmx256m –Xmn64m 永久域默认4m运行程序jvm调整永久域满足需要每调整jvm堆进行完全垃圾收集 使用-XX:MaxPerSize标志增加永久域搭WebLogic Server应用程序加载较类经需要增加永久域值jvm加载类永久域象急剧增加使jvm断调整永久域避免调整使用-XX:PerSize标志设置初始值 面永久域初始值设置32m值设置64mjava -Xms512m -Xmx512m -Xmn128m -XX:PermSize=32m -XX:MaxPermSize=64m 默认状态HotSpot新域使用复制收集器该域般三部第部Eden用于新象另两部称救助空间Eden 充满收集器停止应用程序所达象复制前from救助空间旦前from救助空间充满收集器则达象复制前to救助空间Fromto救助空间互换角色维持象救助空间断复制直获使用期并转入旧域使用-XX:SurvivorRatio 控制新域空间 同NewRationSurvivorRation规定某救助域与Eden空间比值比命令新域设置64mEden占32m每救助域各占16m:java -Xms256m -Xmx256m -Xmn64m -XX:SurvivorRation =2 前所述默认状态HotSpot新域使用复制收集器旧域使用标记-清除-压缩收集器新域使用复制收集器意义应用程序部象短寿命理想状态所渡象移Eden空间收集能够并且移Eden空间象寿命理论立即移进旧域避免救助空间反复复制应用程序能适合种理想状态部寿命象保持些寿命象并放新域复制部象总比压缩旧域廉价控制新域象复制用-XX:TargetSurvivorRatio控制救助空间比例(该值设置救助空间使用比例救助空间位1M该值50表示用500K)该值百比默认值50较堆栈使用较低 sruvivorratio应增加该值80至90更利用救助空间用-XX:maxtenuring threshold控制限 放置所复制全部发及希望象eden扩展旧域MaxTenuring Threshold设置0设置完实际再使用救助空间应SurvivorRatio设值化Eden空间设置:java … -XX:MaxTenuringThreshold=0 –XX:SurvivorRatio=50000 …4BEA JRockit JVM使用 Bea WebLogic 81使用新JVM用于Intel平台Bea安装完毕目录看类似于jrockit81sp1_141_03文件夹 Bea新JVM所目录同于HotSpotJava字节码编译本码预先编译类JRockit提供更细致功能用观察JVM运行状态主要独立GUI控制台(能适用于使用Jrockit才能使用jrockit81sp1_141_03自带console监控些cpu及 memory参数)或者WebLogic Server控制台 Bea JRockit JVM支持4种垃圾收集器: 411代复制收集器 与默认代收集器工作策略类似象新域配即JRockit文档nursery种收集器适合单cpu机型堆 *** 作 412单空间并发收集器 该收集器使用完整堆并与背景线程共同工作尽管种收集器消除断收集器需花费较间寻找象且处理应用程序收集器经运行处理器能应付应用程序产垃圾断应用程序并关闭收集 代并发收集器种收集器护理域使用排复制收集器旧域则使用并发收集器由于比单空间共同发收集器断频繁需要较少内存应用程序运行效率较高注意护理域导致量临象扩展旧域造收集器超负荷运作甚至采用排性工作式完收集 413并行收集器 该收集器停止其进程工作使用线程加速收集进程尽管比其收集器易于引起间断般能更利用内存程序效率较高 默认状态JRockit使用代并发收集器要改变收集器使用-Xgc:应四收集器别 gencopysinglecongencon及parallel使用-Xms-Xmx设置堆初始值要设置护理域则使用- Xns:java –jrockit –Xms512m –Xmx512m –Xgc:gencon –Xns128m…尽管JRockit支持-verbose:gc关输信息收集器同异JRockit支持memory、 loadcodegen输 注意 : 使用JRockit JVM使用WLS自带console(C:\bea\jrockit81sp1_141_03\bin)监控些数据cpu memery等要想能构监控必须启服务startWeblogiccmd加入-Xmanagement参数5何JVM获取信息进行调整 -verbosegc关显示gc *** 作内容打显示忙空闲收集行发间、收集前内存、收集需要间等打- xx:+ printgcdetails关详细解gc变化打-XX: + PrintGCTimeStamps关解些垃圾收集发间自jvm启秒计量通-xx: + PrintHeapAtGC关解堆更详细信息解新域情况通-XX:=PrintTenuringDistribution关解获使用期象权6Pdm系统JVM调整 61服务器:前提内存1G 单CPU 通参数进行调整:-server 启用服务器模式(CPU服务器机建议使用项) -Xms,-Xmx般设同 800m -Xmn NewSize与MaxNewSize设致320m -XX:PerSize 64m -XX:NewSize 320m 值设调新象区减少Full GC数 -XX:MaxNewSize 320m -XX:NewRato NewSize设设 -XX: SurvivorRatio -XX:userParNewGC 用设置并行收集 -XX:ParallelGCThreads 用增加并行度 -XXUseParallelGC 设置使用并行清除收集器 -XX:UseAdaptiveSizePolicy 与面联合使用效更利用自优化新域及救助空间比值 62客户机:通JNLP文件设置参数调整客户端JVM JNLP参数:initial-heap-sizemax-heap-size frameworkRequestManagerJNLP文件加入述参数些值要求根据客户机硬件状态变化(客户机内存等)建议两参数值设客户机用内存60%(待测试)态JNLP两参数值能够随客户机同同靠虑获客户机系统信息并些嵌首页indexjsp作连接请求参数 设置述参数通Visualgc 观察垃圾收些参数状态再做相应调整改善性能般标准减少fullgc数硬件支持使用并行垃圾收(要求CPU)

我从谷歌上找到的说明是,atlas没有支持到hive内部表(managed table)的lineage,只有External修饰的表才能生成血缘。但是解决方案我也没找到啊。。。

网页链接


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13482611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-15
下一篇 2023-08-15

发表评论

登录后才能评论

评论列表(0条)

保存