九月 2009


javaee21 九 2009 03:11 下午

apache httpdserver(2.2.13)+resin(3.1.9)在windows下安装备忘
1、下载Microsoft Visual C++ 2008 Redistributable Package (x86)

http://www.microsoft.com/downloads/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=en

1、下载Apache hppdserver

http://www.apachelounge.com/download/

2、下载resin

http://www.caucho.com/download/

3、安装JDK
4、Microsoft Visual C++ 2008 Redistributable Package (x86)
5、解压缩httpd-2.2.13-win32-x86-ssl.zip到C:\盘根目录下,解压缩到其他盘需要修改Apache2\conf\httpd.conf
比如放到D:\盘需修改
ServerRoot “d:/Apache2″
DocumentRoot “d:/Apache2/htdocs”

<Directory “d:/Apache2/htdocs”>

ScriptAlias /cgi-bin/ “d:/Apache2/cgi-bin/”

6、启动bin\httpd.exe访问测试看到It works!,安装成功
7、解压缩resin-3.1.9.zip到D:\盘

8、修改Apache2\conf\httpd.conf
LoadModule caucho_module “D:/resin-3.1.9/win32/apache-2.0/mod_caucho.dll”

LoadModule caucho_module “D:/resin-3.1.9/win32/apache-2.2/mod_caucho.dll”

9、将httpd、resin设为自动启动服务
bin\httpd.exe -k install
bin\httpd -install

10、

webwork 2.2的服务方式改成了Filter方式,也随之带来一些问题.今天说的是Filter和Resin.

在Apache+Resin的服务方式下,Resin的mod_caucho插件正常情况下仅会对Servlet,Jsp服务,不会对Filter过滤的网址服务,造成WebWork 2.2无法使用.

在Apache+Resin时,如果想让Resin服务Filter过滤的url,可以使用 “special servlet-mappings” ,详细情况可以阅读http://www.caucho.com/resin-3.0/install/plugin-dispatch.xtp .

也就是说,对于一些特殊的url,可以使用 plugin_match 来让resin来服务,而 plugin_ignore 的作用正好相反.

在这里,我们需要plugin_match,为了避免打乱正常的配置,我们使用和web.xml文件相同作用的resin-web.xml来设置相应的url,这样设置仅对resin有效,不影响其他server,还是不错的.

最后我们的resin-web.xml是这样的:
<web-app xmlns=”http://caucho.com/ns/resin”>
<servlet-mapping url-pattern=’/webwork/*’ servlet-name=’plugin_match’/>
<servlet-mapping url-pattern=’/other/*’ servlet-name=’plugin_match’/>
<servlet-mapping url-pattern=’*.action’ servlet-name=’plugin_match’/>
</web-app> 这样webwork的action就可以正常工作了. 对于类似的 UrlRewriteFilter 也可以采用这种方法设置.

javaee18 九 2009 09:29 上午

http://www.jarfinder.com/

http://mvnrepository.com/

http://download.java.net/maven/1/javaee/jars/

根据类查找包含此类的jar包

javaee10 九 2009 02:23 下午

public String doQuery() {
// 只允许POST提交的时候进行查询
String method = ServletActionContext.getRequest().getMethod();
boolean isPostMethod = “POST”.equalsIgnoreCase(method);
if (isPostMethod) {

//invoke your business

} else {
//do nothing
}
return INPUT;
}

struts2的 action是不区分POST和GET方法的,使用上述方法可以只对POST生效,GET请求进来则没反应

javaee08 九 2009 04:17 下午

Hibernate3.3.1
Sybase15
jconn2.jar驱动

造成原因
int firstResult = (pq.getPageIndex()-1) * pq.getPageRows();
query.setFirstResult(firstResult);

firstResult的值计算出来是个负数,指针向前滚,固此报错
ERROR: JZ0BT: 类型 TYPE_FORWARD_ONLY 的 ResultSets 不支持 absolute(int) 方法。

要指针回滚的话不能用FORWARD_ONLY做resultset
TYPE_FORWORD_ONLY,只可向前滚动;
TYPE_SCROLL_INSENSITIVE,双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
TYPE_SCROLL_SENSITIVE,双向滚动,并及时跟踪数据库的更新,以便更改ResultSet中的数据。

参考资料

http://liuu.javaeye.com/blog/288660

javaee08 九 2009 02:22 下午

Hibernate3.3.2和jconn2.jar驱动报错java.lang.AbstractMethodError: supportsGetGeneratedKeys

Invocation of init method failed; nested exception is java.lang.AbstractMethodError: supportsGetGeneratedKeys
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:248)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:835)
Truncated. see log file for complete stacktrace

解决办法
使用Hibernate3.3.1+jconn2.jar组合
或者使用Hibernate3.3.2+jconn3.jar组合

javaee08 九 2009 12:42 下午

ERROR: JZ0IB: The server’s default charset of roman8 does not map to an encoding that is available in the client Java environment. Because jConnect will not be able to do client-side conversion, the connection is unusable and is being closed. Try using a later Java version, or try including your Java installation’s i18n.jar file in the classpath.

ERROR: JZ0IB: The server’s default charset of roman8 does not map to an encoding that is available in the client Java environment. Because jConnect will not be able to do client-side conversion, the connection is unusable and is being closed. Try using a later Java version, or try including your Java installation’s i18n.jar file in the classpath.
8.9.2009 10:00:16 org.hibernate.util.JDBCExceptionReporter logExceptions
WARN: SQL Error: 0, SQLState: JZ006
8.9.2009 10:00:16 org.hibernate.util.JDBCExceptionReporter logExceptions
ERROR: JZ006: \u6355\u83B7\u5230 IO \u4F8B\u5916:java.io.CharConversionException: java.io.UnsupportedEncodingException: hp-roman8
8.9.2009 10:00:16 org.hibernate.util.JDBCExceptionReporter logExceptions
WARN: SQL Error: 0, SQLState: JZ0IB
8.9.2009 10:00:16 org.hibernate.util.JDBCExceptionReporter logExceptions
ERROR: JZ0IB: The server’s default charset of roman8 does not map to an encoding that is available in the client Java environment. Because jConnect will not be able to do client-side conversion, the connection is unusable and is being closed. Try using a later Java version, or try including your Java installation’s i18n.jar file in the classpath.
8.9.2009 10:00:16 org.hibernate.util.JDBCExceptionReporter logExceptions
WARN: SQL Error: 0, SQLState: JZ006
8.9.2009 10:00:16 org.hibernate.util.JDBCExceptionReporter logExceptions
ERROR: JZ006: \u6355\u83B7\u5230 IO \u4F8B\u5916:java.io.CharConversionException: java.io.UnsupportedEncodingException: hp-roman8
8.9.2009 10:00:16 org.hibernate.cfg.SettingsFactory buildSettings
WARN: Could not obtain connection to query metadata
java.sql.SQLException: JZ00L: \u767B\u5F55\u5931\u8D25\u3002\u68C0\u67E5\u4E0E\u6B64\u5F02\u5E38\u73B0\u8C61\u6709\u5173\u7684 SQL \u8B66\u544A\u4EE5\u83B7\u5F97\u5931\u8D25\u539F\u56E0\u3002

服务器的缺省字符集 roman8 并未映射到 客户机 Java 环境中的编码。 由于 jConnect 将不能进行客户端 转换,连接无法使用并且将会关闭。 请尝试 Java 的更高版本,或尝试在 classpath 中包括 Java 安装的 i18n.jar 文件文件或 charsets.jar 文件。

服务器Sybase15,JDBC驱动使用jconn2.jar,
服务器端字符集为roman8
使用jconn2驱动需要手动指定客户端的字符集如下
jdbc.url=jdbc:sybase:Tds:192.168.0.1:5000/database0?charset=cp936

javaee and weblogic01 九 2009 11:14 上午

使用CXF2.2.3的pojoservice和aegis Databinding在weblogic10上进行javafirst的webservice开发

cxf的默认绑定是jaxb,
cxf发布ws的常用方式
1)jaxws+jaxb
2)pojoservice(映射)+aegis

本文采用pojoservice+aegis Databinding进行java first的ws开发

1)
web.xml
<?xml version=”1.0″ encoding=”ISO-8859-1″?>

<!DOCTYPE web-app
PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
“http://java.sun.com/dtd/web-app_2_3.dtd”>
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/cxf-servlet.xml</param-value>
</context-param>

<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

<servlet>
<servlet-name>CXFServlet</servlet-name>
<display-name>CXF Servlet</display-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
</web-app>

2)
cxf-servlet.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<beans xmlns=”http://www.springframework.org/schema/beans”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xmlns:simple=”http://cxf.apache.org/simple”
xmlns:soap=”http://cxf.apache.org/bindings/soap”
xsi:schemaLocation=”
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd
http://cxf.apache.org/simple http://cxf.apache.org/schemas/simple.xsd”>

<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” />

<simple:server id=”pojoservice” serviceClass=”com.webservice.HelloWorld” address=”/hello_world”>
<simple:serviceBean>
<bean  class=”com.webservice.impl.HelloWorldImpl” />
</simple:serviceBean>
<simple:dataBinding>
<bean scope=”prototype”  class=”org.apache.cxf.aegis.databinding.AegisDatabinding” />
</simple:dataBinding>
</simple:server>

</beans>

3)
com.webservice.HelloWorld.java
public interface HelloWorld{

String sayHi(String content);
}

com.webservice.impl.HelloWorldImpl.java
public class HelloWorldImpl implements HelloWorld {

public String sayHi(String text) {
System.out.println(“sayHi called” + new java.util.Date());
return “Hello ” + text;
}
}

4)将
jaxb-api-2.1.jar
xercesImpl-2.9.1.jar
放到D:\bea10\jrockit_150_11\jre\lib\endorsed
目录下否则报错

ERROR: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘pojoservice’: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Schema
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:458)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.servlet.internal.EventsManager.notifyContextCreatedEvent(EventsManager.java:168)
at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1744)
at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2909)
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:973)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:361)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)
at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:117)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)
at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:26)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:635)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:212)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:154)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:182)
at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:359)
at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51)
at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:196)
at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)
at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:233)
at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)
at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)
at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:173)
at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:89)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)
Caused by: java.lang.IllegalArgumentException: Schema
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl.setAttribute(DocumentBuilderFactoryImpl.java:140)
at weblogic.xml.jaxp.WebLogicDocumentBuilderFactory.setAttribute(WebLogicDocumentBuilderFactory.java:146)
at weblogic.xml.jaxp.RegistryDocumentBuilder.setupDocumentBuilderFactory(RegistryDocumentBuilder.java:329)
at weblogic.xml.jaxp.RegistryDocumentBuilder.getDefaultDocumentBuilderFactory(RegistryDocumentBuilder.java:286)
at weblogic.xml.jaxp.RegistryDocumentBuilder.getDocumentBuilder(RegistryDocumentBuilder.java:222)
at weblogic.xml.jaxp.RegistryDocumentBuilder.parse(RegistryDocumentBuilder.java:147)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:98)
at org.apache.cxf.aegis.type.XMLTypeCreator.readAegisFile(XMLTypeCreator.java:186)
at org.apache.cxf.aegis.type.XMLTypeCreator.getDocument(XMLTypeCreator.java:211)
at org.apache.cxf.aegis.type.XMLTypeCreator.findMapping(XMLTypeCreator.java:270)
at org.apache.cxf.aegis.type.XMLTypeCreator.createClassInfo(XMLTypeCreator.java:389)
at org.apache.cxf.aegis.databinding.AegisDatabinding.getParameterType(AegisDatabinding.java:553)
at org.apache.cxf.aegis.databinding.AegisDatabinding.initializeMessage(AegisDatabinding.java:338)
at org.apache.cxf.aegis.databinding.AegisDatabinding.initializeOperation(AegisDatabinding.java:299)
at org.apache.cxf.aegis.databinding.AegisDatabinding.initialize(AegisDatabinding.java:266)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:381)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:444)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:195)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:100)
at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:117)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
… 49 more
28.8.2009 10:41:22 org.springframework.web.context.ContextLoader initWebApplicationContext