??xml version="1.0" encoding="utf-8" standalone="yes"?>
声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!
1.首先在vs中新建项?
2.dweb引用....
3.输入WebService地址Qhttp://88.148.29.54:8080/aio/services/WebServiceSample?wsdl最后点?#8220;d引用”
4.创徏一个简单的form
5.~写按钮事g代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Net;
using System.Windows.Forms;
using WindowsApplication1.WebReference;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
WindowsApplication1.WebReference.WebServiceSampleImplService service = null;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
String str = "";
try
{
str = service.say("Libin");
}
catch (Exception we)
{
str = we.Message;
}
//MessageBox.Show(str);
textBox1.Text = str ;
}
private void Form1_Load(object sender, EventArgs e)
{
service = new WebServiceSampleImplService();
label1.Text = "WS.url:" + service.Url + "\r\n";
}
private void button2_Click(object sender, EventArgs e)
{
String str = "";
try
{
User user = new User();
user.id = 1;
user.name = "Libin";
str = "userName:" + service.sayUserName(user);
}
catch (Exception we)
{
str = we.Message;
}
//MessageBox.Show(str);
textBox1.Text = str;
}
private void button3_Click(object sender, EventArgs e)
{
String str = "";
try
{
Object[] users = service.findUsers();
for (int i = 0; i < users.Length; i++)
{
User user = (User)users[i];
str += "id:"+user.id + " name:" + user.name + "\r\n";
}
}
catch (Exception we)
{
str = we.Message;
}
//MessageBox.Show(str);
textBox1.Text = str;
}
}
}
6.最后点击调试运行,或按F5q行Q通过点击按钮可以看到调用WebService的运行结果了
本文的讨Z很精彩,览讨论>>
JavaEye推荐
中国领先的电(sh)子商务网站-淘宝|招贤纳士,诚聘Java工程?/span>
文章来源:http://lib.javaeye.com/blog/170628
]]>
我们目的整个架构用的比较行的WSH MVCl合,即webwork2 + Spring + Hibernate;
1.首先集成Apacha CXF WebService ?Spring 框架?
apache cxf 下蝲地址:http://people.apache.org/dist/incubator/cxf/2.0.4-incubator/apache-cxf-2.0.4-incubator.zip
在spring context配置文g中引入以下cxf配置
<import resource="classpath*:META-INF/cxf/cxf.xml" />
<import resource="classpath*:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath*:META-INF/cxf/cxf-servlet.xml" />
在web.xml中添加过滤器:
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
2.开发服务端WebService接口:
/**
* WebService接口定义c?
*
* 使用@WebService接口中的所有方法输Zؓ(f)Web Service.
* 可用annotation对设|方法、参数和q回值在WSDL中的定义.
*/
@WebService
public interface WebServiceSample {
/**
* 一个简单的Ҏ(gu),q回一个字W串
* @param hello
* @return
*/
String say(String hello);
/**
* E微复杂一些的Ҏ(gu),传递一个对象给服务端处?br />
* @param user
* @return
*/
String sayUserName(
@WebParam(name = "user")
UserDTO user);
/**
* 最复杂的方?q回一个List装的对象集?br />
* @return
*/
public
@WebResult(partName="o")
ListObject findUsers();
}
q单到复杂定义了三个接?模拟业务需?
3.实现接口
/**
* WebService实现c?
*
* 使用@WebService指向Interface定义cd?
*/
@WebService(endpointInterface = "cn.org.coral.biz.examples.webservice.WebServiceSample")
public class WebServiceSampleImpl implements WebServiceSample {
public String sayUserName(UserDTO user) {
return "hello "+user.getName();
}
public String say(String hello) {
return "hello "+hello;
}
public ListObject findUsers() {
ArrayList<Object> list = new ArrayList<Object>();
list.add(instancUser(1,"lib"));
list.add(instancUser(2,"mld"));
list.add(instancUser(3,"lq"));
list.add(instancUser(4,"gj"));
ListObject o = new ListObject();
o.setList(list);
return o;
}
private UserDTO instancUser(Integer id,String name){
UserDTO user = new UserDTO();
user.setId(id);
user.setName(name);
return user;
}
}
4.依赖的两个类:用户对象与List对象
/**
* Web Service传输User信息的DTO.
*
* 分离entitycMweb service接口间的耦合Q隔lentitycȝ修改Ҏ(gu)口的影响.
* 使用JAXB 2.0的annotation标注JAVA-XML映射Q尽量用默认约?
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "User")
public class UserDTO {
protected Integer id;
protected String name;
public Integer getId() {
return id;
}
public void setId(Integer value) {
id = value;
}
public String getName() {
return name;
}
public void setName(String value) {
name = value;
}
}
关于List对象,参照?a target="_blank">有关JWS的一个问?/a>中的描述:DK6.0 自带的WebService?WebMethod的参数好像不能是ArrayList 或者其他List
传递List需要将List 包装在其他对象内部才?(个h理解 如有不对h? ,我在实践中也遇到了此c问?通过以下装的对象即可以传递List对象.
/**
* <p>Java class for listObject complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="listObject">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="list" type="{http://www.w3.org/2001/XMLSchema}anyType" maxOccurs="unbounded" minOccurs="0"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "listObject", propOrder = { "list" })
public class ListObject {
@XmlElement(nillable = true)
protected List<Object> list;
/**
* Gets the value of the list property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the list property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getList().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link Object }
*
*
*/
public List<Object> getList() {
if (list == null) {
list = new ArrayList<Object>();
}
return this.list;
}
public void setList(ArrayList<Object> list) {
this.list = list;
}
}
5.WebService 服务?spring 配置文g ws-context.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-autowire="byName" default-lazy-init="true">
<jaxws:endpoint id="webServiceSample"
address="/WebServiceSample" implementor="cn.org.coral.biz.examples.webservice.WebServiceSampleImpl"/>
</beans>
WebService 客户?spring 配置文g wsclient-context.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-autowire="byName" default-lazy-init="true">
<!-- ws client -->
<bean id="identityValidateServiceClient" class="cn.org.coral.admin.service.IdentityValidateService"
factory-bean="identityValidateServiceClientFactory" factory-method="create" />
<bean id="identityValidateServiceClientFactory"
class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass"
value="cn.org.coral.admin.service.IdentityValidateService" />
<property name="address"
value="http://88.148.29.54:8080/coral/services/IdentityValidateService"/>
</bean>
</beans>
6.发布到tomcat服务器以后通过以下地址卛_查看自定义的webservice接口生成的wsdl:
http://88.148.29.54:8080/aio/services/WebServiceSample?wsdl
7.调用WebService接口的Junit单元试E序
package test.coral.sample;
import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
import cn.org.coral.biz.examples.webservice.WebServiceSample;
import cn.org.coral.biz.examples.webservice.dto.UserDTO;
public class TestWebServiceSample extends
AbstractDependencyInjectionSpringContextTests {
WebServiceSample webServiceSampleClient;
public void setWebServiceSampleClient(WebServiceSample webServiceSampleClient) {
this.webServiceSampleClient = webServiceSampleClient;
}
@Override
protected String[] getConfigLocations() {
setAutowireMode(AUTOWIRE_BY_NAME);
//spring 客户端配|文件保存位|?br />
return new String[] { "classpath:/cn/org/coral/biz/examples/webservice/wsclient-context.xml" };
}
public void testWSClinet(){
Assert.hasText(webServiceSampleClient.say(" world"));
}
}
]]>
声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!
CAS 单点d安装W记4
--- asp.net client端的讄
1、首先修改web.Config文gQ加入以下设|:(x)
<authentication mode="Forms" >
<forms name="casauth" loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
本h?net不是很熟(zhn),感觉q里的配|类似java web应用E序中的qo(h)器,当用戯问web|首先跌{到l(f)ogin.aspx面q行验证?
2、加入以下c#代码到l(f)ogin.aspx面的加载事件中Q?
//CAS w䆾验证 服务器地址
private const string CASHOST = "https://sso.gzps.net:8443/cas/";
protected void Page_Load(object sender, EventArgs e)
{
System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();
// Look for the "ticket=" after the "?" in the URL
string tkt = Request.QueryString["ticket"];
// This page is the CAS service=, but discard any query string residue
string service = Request.Url.GetLeftPart(UriPartial.Path);
// First time through there is no ticket=, so redirect to CAS login
if (tkt == null || tkt.Length == 0)
{
string redir = CASHOST + "login?" +
"service=" + service;
Response.Redirect(redir);
return;
}
// Second time (back from CAS) there is a ticket= to validate
string validateurl = CASHOST + "serviceValidate?" +
"ticket=" + tkt + "&"+
"service=" + service;
StreamReader Reader = new StreamReader( new WebClient().OpenRead(validateurl));
string resp = Reader.ReadToEnd();
// I like to have the text in memory for debugging rather than parsing the stream
// Some boilerplate to set up the parse.
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
XmlTextReader reader = new XmlTextReader(resp, XmlNodeType.Element, context);
string netid = null;
// A very dumb use of XML. Just scan for the "user". If it isn't there, its an error.
while (reader.Read())
{
if (reader.IsStartElement()) {
string tag = reader.LocalName;
if (tag=="user")
netid = reader.ReadString();
}
}
// if you want to parse the proxy chain, just add the logic above
reader.Close();
// If there was a problem, leave the message on the screen. Otherwise, return to original page.
if (netid == null)
{
Label1.Text = "CAS returned to this application, but then refused to validate your identity.";
}
else
{
Session["UserName"] = netid;
Label1.Text = "Welcome " + netid;
FormsAuthentication.RedirectFromLoginPage(netid, false); // set netid in ASP.NET blocks
}
}
}
以上代码参照了ja-sig|站的解x案:(x)http://www.ja-sig.org/wiki/display/CASC/ASP.NET+Forms+Authentication
3、以样就可以了,q行时可以蟩到sso服务器进行验证,但蟩转以后报以下错误Q?
" System.Net.WebException?基础q接已关闭?无法建立与远E服务器信Q关系 "?
应该与CAS Server端安装了数字证书Q?net Client端ƈ没有安装相应的证书有兟?
可以通过配置IIS服务器,支持HTTPS SSL协议实现安全数据交换中介l的步骤导入CAS 服务端的数字证书,或者通过http://support.microsoft.com/kb/823177/上介l的解决Ҏ(gu)q行处理Q?
实现c?
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class MyPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint
, X509Certificate certificate
, WebRequest request
, int certificateProblem) {
//Return True to force the certificate to be accepted.
return true;
} // end CheckValidationResult
} // class MyPolicy
客户端代码中包含下列代码Q?
System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();
所有代码见附gWebSite.rar,其部vC的IIS服务器就可以了?
关于IIS服务器的讄?a target="_blank">asp.net一夜速成教程
本文的讨Z很精彩,览讨论>>
JavaEye推荐
中国领先的电(sh)子商务网站-淘宝|招贤纳士,诚聘Java工程?/span>
文章来源:http://lib.javaeye.com/blog/166619
]]>
声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!
CAS 单点d安装W记3
-- 与acegi集成
在我的项目中应用了acigi安全框架,以下是结合yale cas单点dpȝq行的相关配|?
<!-- ========= Acegi as a CAS Client的配|?============ -->
<bean id="authenticationProcessingFilter"
class="org.acegisecurity.ui.cas.CasProcessingFilter">
<property name="authenticationManager"
ref="authenticationManager" />
<property name="authenticationFailureUrl"
value="/login.do?login_error=1" />
<property name="defaultTargetUrl" value="/main.do" />
<property name="filterProcessesUrl">
<value>/j_acegi_cas_security_check</value>
</property>
<property name="rememberMeServices" ref="rememberMeServices" />
<property name="exceptionMappings">
<value>
org.acegisecurity.AuthenticationServiceException=/login.do?login_error=user_not_found_error
org.acegisecurity.BadCredentialsException=/login.do?login_error=user_psw_error
org.acegisecurity.concurrent.ConcurrentLoginException=/login.do?login_error=too_many_user_error
org.acegisecurity.DisabledException=/login.do?login_error=disabled_user_error
</value>
</property>
</bean>
<bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter">
<property name="authenticationEntryPoint">
<ref local="casProcessingFilterEntryPoint"/>
</property>
<property name="accessDeniedHandler">
<bean
class="org.acegisecurity.ui.AccessDeniedHandlerImpl">
<property name="errorPage"
value="/errors/accessDenied.jsp" />
</bean>
</property>
</bean>
<!-- cas config -->
<bean id="casProcessingFilterEntryPoint" class="org.acegisecurity.ui.cas.CasProcessingFilterEntryPoint">
<property name="loginUrl"><value>https://sso.gzps.net:8443/cas/login</value></property>
<property name="serviceProperties"><ref local="serviceProperties"/></property>
</bean>
<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">
<property name="providers">
<list>
<ref local="casAuthenticationProvider"/>
</list>
</property>
</bean>
<bean id="casAuthenticationProvider" class="org.acegisecurity.providers.cas.CasAuthenticationProvider">
<property name="casAuthoritiesPopulator"><ref bean="casAuthoritiesPopulator"/></property>
<property name="casProxyDecider"><ref local="casProxyDecider"/></property>
<property name="ticketValidator"><ref local="casProxyTicketValidator"/></property>
<property name="statelessTicketCache"><ref local="statelessTicketCache"/></property>
<property name="key"><value>my_password_for_this_auth_provider_only</value></property>
</bean>
<bean id="casProxyTicketValidator" class="org.acegisecurity.providers.cas.ticketvalidator.CasProxyTicketValidator">
<property name="casValidate"><value>https://sso.gzps.net:8443/cas/proxyValidate</value></property>
<property name="serviceProperties"><ref local="serviceProperties"/></property>
</bean>
<!--
<bean id="casProxyDecider" class="org.acegisecurity.providers.cas.proxy.AcceptAnyCasProxy" />
-->
<bean id="casProxyDecider" class="org.acegisecurity.providers.cas.proxy.RejectProxyTickets" />
<bean id="serviceProperties" class="org.acegisecurity.ui.cas.ServiceProperties">
<property name="service">
<value>http://localhost:8080/aio/j_acegi_cas_security_check</value>
</property>
<property name="sendRenew">
<value>false</value>
</property>
</bean>
<bean id="statelessTicketCache" class="org.acegisecurity.providers.cas.cache.EhCacheBasedTicketCache">
<property name="cache">
<bean class="org.springframework.cache.ehcache.EhCacheFactoryBean">
<property name="cacheManager">
<bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/>
</property>
<property name="cacheName" value="userCache"/>
</bean>
</property>
</bean>
<bean id="casAuthoritiesPopulator" class="org.acegisecurity.providers.cas.populator.DaoCasAuthoritiesPopulator">
<property name="userDetailsService"><ref local="userDetailsService"/></property>
</bean>
<bean id="casProcessingFilter" class="org.acegisecurity.ui.cas.CasProcessingFilter">
<property name="authenticationManager"><ref local="authenticationManager"/></property>
<property name="authenticationFailureUrl"><value>/casfailed.jsp</value></property>
<property name="defaultTargetUrl"><value>/</value></property>
<property name="filterProcessesUrl"><value>/j_acegi_cas_security_check</value></property>
</bean>
<!-- ======================================================= -->
本文的讨Z很精彩,览讨论>>
JavaEye推荐
中国领先的电(sh)子商务网站-淘宝|招贤纳士,诚聘Java工程?/span>
文章来源:http://lib.javaeye.com/blog/165980
]]>
声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!
CAS 单点d安装W记2
1.修改cas/webapp/WEB-INF/deployerConfigContext.xml
加入以下定义:
<!-- 数据源定?-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
<!--
passwordEncoder 使用Md5法加密
-->
<bean id="passwordEncoder"
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">
<constructor-arg value="MD5"/>
</bean>
2.屏蔽原有验证Ҏ(gu):
<!--
<bean
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
-->
3.加入通过讉K数据库进行验证的handler:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="sql" value="select password from CORE_USERS where logid=?" />
<property name="passwordEncoder" ref="passwordEncoder"/>
<property name="dataSource" ref="dataSource" />
</bean>
4.修改cas\webapp\WEB-INF\cas.properties,定义数据库连接资?本例子是q接的oracle数据?
db.driver=oracle.jdbc.driver.OracleDriver
db.url=jdbc\:oracle\:thin\:@192.168.1.1\:1521\:xxxx
db.username=xxxx
db.password=xxxx
5.增加相关jar包到cas\webapp\WEB-INF\lib\目录?
cas-server-support-jdbc-3.2.jar (casq接数据库的支持?
ojdbc14.jar (q接oracle数据的jdbc驱动E序)
本文的讨Z很精彩,览讨论>>
JavaEye推荐
中国领先的电(sh)子商务网站-淘宝|招贤纳士,诚聘Java工程?/span>
文章来源:http://lib.javaeye.com/blog/165538
]]>
声明Q本文系JavaEye|站发布的原创博客文章,未经作者书面许可,严禁M|站转蝲本文Q否则必追I法律责任!
安装JA-SIG SSOpȝW记1
(关于配置讉K数据库的用户表见安装JA-SIG SSOpȝW记2)
(与acegil合配置?a target="_blank">安装JA-SIG SSOpȝW记3)
(ASP.NET client端的讄?a target="_blank">安装JA-SIG SSOpȝW记4)
ps:配置中的文g路径Ҏ(gu)自己的实际情늚讑֮
1.安装JA-SIG ?TOMCAT;
JA-SIG下蝲地址:
http://www.ja-sig.org/products/cas/downloads/index.html
2.生成数字证书,见批处理文g"cas 生成数字证书.bat";
3.配置Tomcat的HTTPS服务,修改server.xml
<Connector protocol="org.apache.coyote.http11.Http11Protocol"
port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="C:/Documents and Settings/Administrator/.keystore" keystorePass="changeit"
truststoreFile="D:/Java/jdk1.6.0_02/jre/lib/security/cacerts"
clientAuth="false" sslProtocol="TLS"/>
4.导出 SERVER 的证书,用来l所有需要用到的客户端导??导出 cas 数字证书.bat"
5.在客L(fng)?JVM 里导入信ȝ SERVER 的证?( Ҏ(gu)情况有可能需要管理员权限 ),?导入 cas 证书.bat"Q?
5.修改客户端服务程?加入casqo(h)?修改web.xml
<!-- CAS -->
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://sso.gzps.net:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://sso.gzps.net:8443/cas/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>88.148.29.54:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
本文的讨Z很精彩,览讨论>>
JavaEye推荐
中国领先的电(sh)子商务网站-淘宝|招贤纳士,诚聘Java工程?/span>
文章来源:http://lib.javaeye.com/blog/165196
]]>
xfire:
ttp://dist.codehaus.org/xfire/update/
m2eclipse:
http://m2eclipse.codehaus.org/
]]>
//所有选项集合
List lsDefineOptions = new ArrayList();
for(int j=0;j<lsOptions.size();j++)
{
Element option = (Element) lsOptions.get(j);
String label = option.getAttributeValue("label");
String index = option.getAttributeValue("index");
String flowstate = option.getAttributeValue("flowstate");
String querySql = option.getChildText("query-sql");
//操作对?/span>
SearchOptionDefine defineOption = new SearchOptionDefine();
defineOption.setLabel(label);
if(StringUtils.isNotBlank(index))
{
defineOption.setIndex(Integer.parseInt(index));
}
if(StringUtils.isNotBlank(flowstate))
{
defineOption.setFlowstate(Integer.parseInt(flowstate));
}
defineOption.setQuerySql(querySql);
Log.debug("querySql:"+querySql);
lsDefineOptions.add(defineOption);
}
//所有选项集合的排?/span>
java.util.Collections.sort(lsDefineOptions);
package com.mip.core.objects;
import java.io.Serializable;
/** *//**
* <p>
* 主题查询对象
* </p>
* @author Libin
* @date Mar 29, 2007
* @version 4.0
*
* @see AnotherClass
*/
public class SearchOptionDefine implements Serializable,Comparable
{
/** *//**
*
*/
private static final long serialVersionUID = 3256440313546683697L;
/** *//** A int variable 所有状态标?/span>*/
public static final int ALL_STATE=999;
/** *//**
* Constructs a SearchDefine
*/
public SearchOptionDefine()
{
index=0;
flowstate=ALL_STATE;
}
/** *//**
* 主题查询的每一定?
* label:对应下拉框显C的中文名称
* index:排序序号
* flowstate:对应程状?l合程状态来定是否昄当前选项
* query_sql:原生SQL语句,主题查询的条?br>
*/
private String label;
private Integer index;
private Integer flowstate;
private String querySql;
public Integer getFlowstate()
{
return flowstate;
}
public void setFlowstate(Integer flowstate)
{
this.flowstate = flowstate;
}
public Integer getIndex()
{
return index;
}
public void setIndex(Integer index)
{
this.index = index;
}
public String getLabel()
{
return label;
}
public void setLabel(String label)
{
this.label = label;
}
public String getQuerySql()
{
return querySql;
}
public void setQuerySql(String query_sql)
{
this.querySql = query_sql;
}
public int compareTo(Integer arg0)
{
return index.compareTo(arg0);
}
public int compareTo(Object obj)
{
// TODO Auto-generated method stub
return (this.getIndex() - ((SearchOptionDefine)obj).getIndex());
}
}
]]>
PermGen space的全U是Permanent Generation space,是指内存的永久保存区?br />OutOfMemoryError: PermGen space从表面上看就是内存益出,解决Ҏ(gu)也一定是加大
内存。说说ؓ(f)什么会(x)内存益出Q这一部分用于存放Class和Meta的信?Class在被 Load
的时候被攑օPermGen space区域Q它和和存放Instance的Heap区域不同,GC(Garbage
Collection)不会(x)在主E序q行期对PermGen spaceq行清理Q所以如果你的APP?x)LOAD
很多CLASS的话,很可能出现PermGen space错误。这U错误常见在web服务器对JSPq?br />行pre compile的时候?/p>
Ҏ(gu)Ҏ(gu)Q?Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
q里以tomcat环境ZQ其它WEB服务器如jboss,weblogic{是同一个道理?br />一、java.lang.OutOfMemoryError: PermGen space
PermGen space的全U是Permanent Generation space,是指内存的永久保存区?
q块内存主要是被JVM存放Class和Meta信息?Class在被Loader时就?x)被攑ֈPermGen
space?
它和存放cd?Instance)的Heap区域不同,GC(Garbage Collection)不会(x)在主E序q?br />行期?br />PermGen spaceq行清理Q所以如果你的应用中有很多CLASS的话,很可能出现PermGen
space错误,
q种错误常见在web服务器对JSPq行pre compile的时候。如果你的WEB APP下都用了?br />量的W三方jar, 其大?br />过了jvm默认的大?4M)那么׃(x)产生此错误信息了?br />解决Ҏ(gu)Q?手动讄MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行Q?br />JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
Q将相同的第三方jar文gUȝ到tomcat/shared/lib目录下,q样可以辑ֈ减少
jar 文档重复占用内存的目的?/p>