我一直com.sun.xml.bind.marshaller.NamespacePrefixMapper
在我的项目中使用,我在JDK 6u17中没有遇到任何问题.现在我刚刚更新到6u18,我看到它已被替换为com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper
.但是,如果我导入此类并尝试编译我的类,我会收到错误:
package com.sun.xml.internal.bind.marshaller does not exist import com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper;
我可以通过NetBeans代码完成功能访问此包,NetBeans不会突出显示错误代码.
任何帮助,将不胜感激!
我在MySQL上运行GlassFish 3和JPA(EclipseLink)上的Java Web应用程序.我面临的问题是,如果我使用该update()
方法将实体保存到数据库,则String
字段会失去完整性; '?'
显示而不是一些字符.
服务器,页面和数据库配置为使用UTF-8
.
发布表单数据后,下一页正确显示数据.此外,在NetBeans调试中"看起来"似乎String
当前实体的属性也存储了正确的值.Dunno,如果可以信任NetBeans调试; 可能是它正确解码,但它是不正确的.
我正在尝试创建一个XmlAdapter
接收XMLGregorianCalendar
并输出一个XMLGregorianCalendar
.目的是简单地在解组数据时从元素中删除时区数据.
它看起来像这样:
public class TimezoneRemoverAdapter extends XmlAdapter<XMLGregorianCalendar, XMLGregorianCalendar> {
public XMLGregorianCalendar unmarshal(XMLGregorianCalendar xgc) {
if(xgc == null) {
return null;
}
xgc.setTimezone(DatatypeConstants.FIELD_UNDEFINED);
return xgc;
}
public XMLGregorianCalendar marshal(XMLGregorianCalendar xgc) {
return xgc;
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于以下代码:
public class FooElement {
@XmlElement(name="bar-date")
@XmlJavaTypeAdapter(TimezoneRemoverAdapter.class)
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar barDate;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我使用jaxb-bindings.xml
文件生成代码时,上面的代码如下所示:
public class FooElement {
@XmlElement(name="bar-date", type=java.lang.String.class)
@XmlJavaTypeAdapter(TimezoneRemoverAdapter.class)
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar barDate;
}
Run Code Online (Sandbox Code Playgroud)
它将类型设置为String
,所以我的上述方法不起作用.类型String
设置将覆盖XMLGregorianCalendar
它应该的类型.我可以手动更改它,但我不必记住每次重新生成jaxb文件时都要更新它.有谁知道是否有手动设置@XmlElement
类型或忽略它的选项? …
我很抱歉,如果这已经得到解答,但我一直在使用的搜索术语(即JAXB @XmlAttribute压缩或JAXB XML编组到String不同的结果)没有提出任何建议.
我正在使用JAXB来取消/编组带注释@XmlElement
和@XmlAttribute
注释的对象.我有一个格式化程序类,它提供了两个方法 - 一个包装marshal方法并接受对象编组和一个OutputStream
,另一个只接受对象并将XML输出作为String返回.不幸的是,这些方法不能为相同的对象提供相同的输出.封送到文件时,内部标记的简单对象字段@XmlAttribute
将打印为:
<element value="VALUE"></element>
Run Code Online (Sandbox Code Playgroud)
当编组到一个字符串时,它们是:
<element value="VALUE"/>
Run Code Online (Sandbox Code Playgroud)
我更喜欢这两种情况的第二种格式,但我很好奇如何控制差异,并且无论如何都会满足于它们.我甚至创建了一个静态编组器,两种方法都使用它来消除不同的实例值.格式代码如下:
/** Marker interface for classes which are listed in jaxb.index */
public interface Marshalable {}
Run Code Online (Sandbox Code Playgroud)
/** Local exception class */
public class XMLMarshalException extends BaseException {}
Run Code Online (Sandbox Code Playgroud)
/** Class which un/marshals objects to XML */
public class XmlFormatter {
private static Marshaller marshaller = null;
private static Unmarshaller unmarshaller = null;
static {
try {
JAXBContext context …
Run Code Online (Sandbox Code Playgroud) 我有两个INSERT
命令,对我来说没用,因为两组行 - 已经在表中的行和我作为INSERT
命令的行 - 不是分离的.两个命令都插入了大量行和大量值.
因此,如果我想执行这些行,我会得到重复的输入错误.
有没有简单的方法将这些命令"转换"成UPDATE
?
我知道这听起来很愚蠢,因为为什么我做INSERT
的命令,如果我想UPDATE
.只是为了使它成为一个明确的场景:另一个开发人员给了我脚本:)
谢谢,丹尼尔
编辑 - 问题解决了
首先,我创建了一个表并用我的INSERT
命令填充它,然后我使用以下REPLACE
命令:
REPLACE
INTO table_1
SELECT *
FROM table_2;
Run Code Online (Sandbox Code Playgroud)
最初可以在以下位置找到:如何合并两个MySQL表?
我在GlassFish上有一个Java-JSF Web应用程序,我想在其中使用连接池.因此,我创建了一个application
scoped bean,它Connection
为其他bean的实例提供服务:
public class DatabaseBean {
private DataSource myDataSource;
public DatabaseBean() {
try {
Context ctx = new InitialContext();
ecwinsDataSource = (DataSource) ctx.lookup("jdbc/myDataSource");
} catch (NamingException ex) {
ex.printStackTrace();
}
}
public Connection getConnection() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
Connection connection = myDataSource.getConnection();
System.out.println("Succesfully connected: " + connection);
//Sample: Succesfully connected: com.sun.gjc.spi.jdbc40.ConnectionHolder40@7fb213a5
return connection;
}
}
Run Code Online (Sandbox Code Playgroud)
这样连接池的填充速度非常快; 在通过"db-related"视图进行一些导航后,应用程序将停止并显示以下内容:
RAR5117:无法从连接池[mysql_testPool]获取/创建连接.原因:正在使用的连接等于max-pool-size和expired max-wait-time.无法分配更多连接.RAR5114:分配连接时出错:[分配连接时出错.原因:正在使用的连接等于max-pool-size和expired max-wait-time.无法分配更多连接.] java.sql.SQLException:分配连接时出错.原因:正在使用的连接等于max-pool-size和expired max-wait-time.无法分配更多连接.
我正在关闭每种方法中的连接和其他资源.应用程序通过独立连接运行一切正常.
我究竟做错了什么?任何提示或建议将不胜感激.
有没有办法简单地将GlassFish v3.0.1服务器设置(即连接池,资源,领域......)复制到另一个GlassFish,所以不需要手动设置它们?这样,设置相同的开发环境会容易得多.
环境:NetBeans 6.9 + GlassFish 3.0.1
谢谢,丹尼尔
我想从bean动态引用XSD,这怎么可能?我已经将XSD添加到项目中,因此它位于GlassFish域中的某个位置.
制作"后退"链接的最佳方法是什么,以便应用程序在导航后保持一致.
onclick="history.go(-1)"
.这是非常有害的吗?<f:setPropertyActionListener>
.任何帮助,将不胜感激!分享你的意见!丹尼尔